Skip to content

Commit

Permalink
Added processing time telemetry data
Browse files Browse the repository at this point in the history
  • Loading branch information
dpomianbuff committed Jul 18, 2023
1 parent c3fd809 commit 5710ee2
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pluginGroup=com.intellij.ml.llm.template
pluginName=LLM Extract Function
pluginRepositoryUrl=https://github.com/JetBrains/intellij-platform-plugin-template
pluginVersion=0.2.1
pluginVersion=0.2.2

# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 231
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ abstract class ApplyExtractFunctionTransformationIntention(
private val logger = Logger.getInstance("#com.intellij.ml.llm")
private val codeTransformer = CodeTransformer()
private val telemetryDataManager = EFTelemetryDataManager()
private var llmResponseTime = 0L

init {
codeTransformer.addObserver(EFLoggerObserver(logger))
Expand Down Expand Up @@ -86,11 +87,13 @@ abstract class ApplyExtractFunctionTransformationIntention(
project, LLMBundle.message("intentions.request.extract.function.background.process.title")
) {
override fun run(indicator: ProgressIndicator) {
val now = System.currentTimeMillis()
val response = sendChatRequest(
project, messageList, efLLMRequestProvider.chatModel, efLLMRequestProvider
)
if (response != null) {
invokeLater {
llmResponseTime = System.currentTimeMillis() - now
if (response.getSuggestions().isEmpty()) {
showEFNotification(
project,
Expand Down Expand Up @@ -123,6 +126,7 @@ abstract class ApplyExtractFunctionTransformationIntention(
}

private fun processLLMResponse(response: LLMBaseResponse, project: Project, editor: Editor, file: PsiFile) {
val now = System.currentTimeMillis()
val llmResponse = response.getSuggestions()[0]
val efSuggestionList = identifyExtractFunctionSuggestions(llmResponse.text)
val candidates = EFCandidateFactory().buildCandidates(efSuggestionList.suggestionList, editor, file).toList()
Expand All @@ -133,6 +137,7 @@ abstract class ApplyExtractFunctionTransformationIntention(
NotificationType.INFORMATION
)
telemetryDataManager.addCandidatesTelemetryData(buildCandidatesTelemetryData(0, emptyList()))
buildProcessingTimeTelemetryData(llmResponseTime, System.currentTimeMillis() - now)
sendTelemetryData()
} else {
val candidatesApplicationTelemetryObserver = EFCandidatesApplicationTelemetryObserver()
Expand All @@ -144,6 +149,7 @@ abstract class ApplyExtractFunctionTransformationIntention(
candidatesApplicationTelemetryObserver.getData()
)
)
buildProcessingTimeTelemetryData(llmResponseTime, System.currentTimeMillis() - now)

if (filteredCandidates.isEmpty()) {
showEFNotification(
Expand Down Expand Up @@ -232,6 +238,17 @@ abstract class ApplyExtractFunctionTransformationIntention(
}
}

private fun buildProcessingTimeTelemetryData(llmResponseTime: Long, pluginProcessingTime: Long) {
val efTelemetryData = telemetryDataManager.getData()
if (efTelemetryData != null) {
efTelemetryData.processingTime = EFTelemetryDataProcessingTime(
llmResponseTime = llmResponseTime,
pluginProcessingTime = pluginProcessingTime,
totalTime = llmResponseTime + pluginProcessingTime
)
}
}

private fun buildCandidatesTelemetryData(
numberOfSuggestions: Int, notificationPayloadList: List<EFCandidateApplicationPayload>
): EFCandidatesTelemetryData {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ data class EFTelemetryData(

@SerializedName("elapsedTime")
lateinit var elapsedTime: List<CandidateElapsedTimeTelemetryData>

@SerializedName("processingTime")
lateinit var processingTime: EFTelemetryDataProcessingTime
}

data class EFHostFunctionTelemetryData(
Expand Down Expand Up @@ -124,6 +127,17 @@ data class EFTelemetryDataElapsedTimeNotificationPayload(
var selectionIndex: Int
)

data class EFTelemetryDataProcessingTime(
@SerializedName("llmResponseTime")
var llmResponseTime: Long,

@SerializedName("pluginProcessingTime")
var pluginProcessingTime: Long,

@SerializedName("totalTime")
var totalTime: Long
)

class EFTelemetryDataManager {
private var currentSessionId: String = ""
private val data: MutableMap<String, EFTelemetryData> = mutableMapOf()
Expand Down

0 comments on commit 5710ee2

Please sign in to comment.