Detailed changes
@@ -18,6 +18,9 @@ use language_model::{
LanguageModelRequestTool, LanguageModelTextStream, LanguageModelToolChoice,
LanguageModelToolUse, Role, TokenUsage,
};
+use language_models::provider::anthropic::telemetry::{
+ AnthropicCompletionType, AnthropicEventData, AnthropicEventReporter, AnthropicEventType,
+};
use multi_buffer::MultiBufferRow;
use parking_lot::Mutex;
use prompt_store::PromptBuilder;
@@ -637,7 +640,7 @@ impl CodegenAlternative {
stream: impl 'static + Future<Output = Result<LanguageModelTextStream>>,
cx: &mut Context<Self>,
) -> Task<()> {
- let anthropic_reporter = language_model::AnthropicEventReporter::new(&model, cx);
+ let anthropic_reporter = AnthropicEventReporter::new(&model, cx);
let session_id = self.session_id;
let model_telemetry_id = model.telemetry_id();
let model_provider_id = model.provider_id().to_string();
@@ -830,9 +833,9 @@ impl CodegenAlternative {
error_message = error_message.as_deref(),
);
- anthropic_reporter.report(language_model::AnthropicEventData {
- completion_type: language_model::AnthropicCompletionType::Editor,
- event: language_model::AnthropicEventType::Response,
+ anthropic_reporter.report(AnthropicEventData {
+ completion_type: AnthropicCompletionType::Editor,
+ event: AnthropicEventType::Response,
language_name: language_name.map(|n| n.to_string()),
message_id,
});
@@ -1,5 +1,6 @@
-use language_model::AnthropicEventData;
-use language_model::report_anthropic_event;
+use language_models::provider::anthropic::telemetry::{
+ AnthropicCompletionType, AnthropicEventData, AnthropicEventType, report_anthropic_event,
+};
use std::cmp;
use std::mem;
use std::ops::Range;
@@ -467,8 +468,8 @@ impl InlineAssistant {
report_anthropic_event(
&model.model,
AnthropicEventData {
- completion_type: language_model::AnthropicCompletionType::Editor,
- event: language_model::AnthropicEventType::Invoked,
+ completion_type: AnthropicCompletionType::Editor,
+ event: AnthropicEventType::Invoked,
language_name: buffer.language().map(|language| language.name().to_proto()),
message_id: None,
},
@@ -1105,13 +1106,13 @@ impl InlineAssistant {
(
"rejected",
"Assistant Response Rejected",
- language_model::AnthropicEventType::Reject,
+ AnthropicEventType::Reject,
)
} else {
(
"accepted",
"Assistant Response Accepted",
- language_model::AnthropicEventType::Accept,
+ AnthropicEventType::Accept,
)
};
@@ -1128,8 +1129,8 @@ impl InlineAssistant {
report_anthropic_event(
&model.model,
- language_model::AnthropicEventData {
- completion_type: language_model::AnthropicCompletionType::Editor,
+ AnthropicEventData {
+ completion_type: AnthropicCompletionType::Editor,
event: anthropic_event_type,
language_name,
message_id,
@@ -2,6 +2,9 @@ use crate::inline_prompt_editor::CodegenStatus;
use futures::{SinkExt, StreamExt, channel::mpsc};
use gpui::{App, AppContext as _, Context, Entity, EventEmitter, Task};
use language_model::{ConfiguredModel, LanguageModelRegistry, LanguageModelRequest};
+use language_models::provider::anthropic::telemetry::{
+ AnthropicCompletionType, AnthropicEventData, AnthropicEventReporter, AnthropicEventType,
+};
use std::time::Instant;
use terminal::Terminal;
use uuid::Uuid;
@@ -40,7 +43,7 @@ impl TerminalCodegen {
return;
};
- let anthropic_reporter = language_model::AnthropicEventReporter::new(&model, cx);
+ let anthropic_reporter = AnthropicEventReporter::new(&model, cx);
let session_id = self.session_id;
let model_telemetry_id = model.telemetry_id();
let model_provider_id = model.provider_id().to_string();
@@ -94,9 +97,9 @@ impl TerminalCodegen {
error_message = error_message,
);
- anthropic_reporter.report(language_model::AnthropicEventData {
- completion_type: language_model::AnthropicCompletionType::Terminal,
- event: language_model::AnthropicEventType::Response,
+ anthropic_reporter.report(AnthropicEventData {
+ completion_type: AnthropicCompletionType::Terminal,
+ event: AnthropicEventType::Response,
language_name: None,
message_id,
});
@@ -17,7 +17,10 @@ use gpui::{App, Entity, Focusable, Global, Subscription, Task, UpdateGlobal, Wea
use language::Buffer;
use language_model::{
CompletionIntent, ConfiguredModel, LanguageModelRegistry, LanguageModelRequest,
- LanguageModelRequestMessage, Role, report_anthropic_event,
+ LanguageModelRequestMessage, Role,
+};
+use language_models::provider::anthropic::telemetry::{
+ AnthropicCompletionType, AnthropicEventData, AnthropicEventType, report_anthropic_event,
};
use project::Project;
use prompt_store::{PromptBuilder, PromptStore};
@@ -312,13 +315,13 @@ impl TerminalInlineAssistant {
(
"rejected",
"Assistant Response Rejected",
- language_model::AnthropicEventType::Reject,
+ AnthropicEventType::Reject,
)
} else {
(
"accepted",
"Assistant Response Accepted",
- language_model::AnthropicEventType::Accept,
+ AnthropicEventType::Accept,
)
};
@@ -335,8 +338,8 @@ impl TerminalInlineAssistant {
report_anthropic_event(
&model,
- language_model::AnthropicEventData {
- completion_type: language_model::AnthropicCompletionType::Terminal,
+ AnthropicEventData {
+ completion_type: AnthropicCompletionType::Terminal,
event: anthropic_event_type,
language_name: None,
message_id,
@@ -4,7 +4,6 @@ mod rate_limiter;
mod registry;
mod request;
mod role;
-mod telemetry;
pub mod tool_schema;
#[cfg(any(test, feature = "test-support"))]
@@ -38,7 +37,6 @@ pub use crate::rate_limiter::*;
pub use crate::registry::*;
pub use crate::request::*;
pub use crate::role::*;
-pub use crate::telemetry::*;
pub use crate::tool_schema::LanguageModelToolSchemaFormat;
pub use zed_env_vars::{EnvVar, env_var};
@@ -1,3 +1,5 @@
+pub mod telemetry;
+
use anthropic::{
ANTHROPIC_API_URL, AnthropicError, AnthropicModelMode, ContentDelta, CountTokensRequest, Event,
ResponseContent, ToolResultContent, ToolResultPart, Usage,
@@ -1,8 +1,8 @@
-use crate::ANTHROPIC_PROVIDER_ID;
use anthropic::ANTHROPIC_API_URL;
use anyhow::{Context as _, anyhow};
use gpui::BackgroundExecutor;
use http_client::{AsyncBody, HttpClient, Method, Request as HttpRequest};
+use language_model::{ANTHROPIC_PROVIDER_ID, LanguageModel};
use std::env;
use std::sync::Arc;
use util::ResultExt;
@@ -52,7 +52,7 @@ impl AnthropicEventType {
}
pub fn report_anthropic_event(
- model: &Arc<dyn crate::LanguageModel>,
+ model: &Arc<dyn LanguageModel>,
event: AnthropicEventData,
cx: &gpui::App,
) {
@@ -69,7 +69,7 @@ pub struct AnthropicEventReporter {
}
impl AnthropicEventReporter {
- pub fn new(model: &Arc<dyn crate::LanguageModel>, cx: &gpui::App) -> Self {
+ pub fn new(model: &Arc<dyn LanguageModel>, cx: &gpui::App) -> Self {
Self {
http_client: cx.http_client(),
executor: cx.background_executor().clone(),