cloud_llm_client: Add Baseten language model provider (#62950)
Release Notes: - N/A
This commit is contained in:
1 parent
4af4524d2e
commit
ffe204c209
3 files changed
+23
-10
No files matched your search
@@ -91,6 +91,7 @@ impl FromStr for UsageLimit {
|
||||
#[strum(serialize_all = "snake_case")]
|
||||
pub enum LanguageModelProvider {
|
||||
Anthropic,
|
||||
Baseten,
|
||||
OpenAi,
|
||||
Google,
|
||||
XAi,
|
||||
|
||||
@@ -5,6 +5,10 @@ pub const ANTHROPIC_PROVIDER_ID: LanguageModelProviderId =
|
||||
pub const ANTHROPIC_PROVIDER_NAME: LanguageModelProviderName =
|
||||
LanguageModelProviderName::new("Anthropic");
|
||||
|
||||
pub const BASETEN_PROVIDER_ID: LanguageModelProviderId = LanguageModelProviderId::new("baseten");
|
||||
pub const BASETEN_PROVIDER_NAME: LanguageModelProviderName =
|
||||
LanguageModelProviderName::new("Baseten");
|
||||
|
||||
pub const OPEN_AI_PROVIDER_ID: LanguageModelProviderId = LanguageModelProviderId::new("openai");
|
||||
pub const OPEN_AI_PROVIDER_NAME: LanguageModelProviderName =
|
||||
LanguageModelProviderName::new("OpenAI");
|
||||
@@ -25,6 +29,8 @@ pub fn provider_name_for_id(provider_id: &LanguageModelProviderId) -> LanguageMo
|
||||
OPEN_AI_PROVIDER_NAME
|
||||
} else if provider_id == &ANTHROPIC_PROVIDER_ID {
|
||||
ANTHROPIC_PROVIDER_NAME
|
||||
} else if provider_id == &BASETEN_PROVIDER_ID {
|
||||
BASETEN_PROVIDER_NAME
|
||||
} else if provider_id == &GOOGLE_PROVIDER_ID {
|
||||
GOOGLE_PROVIDER_NAME
|
||||
} else if provider_id == &X_AI_PROVIDER_ID {
|
||||
|
||||
@@ -19,12 +19,12 @@ use http_client::{
|
||||
AsyncBody, HttpClient, HttpClientWithUrl, HttpRequestExt, Method, Response, StatusCode,
|
||||
};
|
||||
use language_model::{
|
||||
ANTHROPIC_PROVIDER_ID, ANTHROPIC_PROVIDER_NAME, CompactionResult, DisabledReason,
|
||||
GOOGLE_PROVIDER_ID, GOOGLE_PROVIDER_NAME, LanguageModel, LanguageModelCompletionError,
|
||||
LanguageModelCompletionEvent, LanguageModelEffortLevel, LanguageModelId, LanguageModelName,
|
||||
LanguageModelProviderId, LanguageModelProviderName, LanguageModelRequest,
|
||||
LanguageModelToolChoice, LanguageModelToolSchemaFormat, OPEN_AI_PROVIDER_ID,
|
||||
OPEN_AI_PROVIDER_NAME, RateLimiter, X_AI_PROVIDER_ID, X_AI_PROVIDER_NAME,
|
||||
ANTHROPIC_PROVIDER_ID, ANTHROPIC_PROVIDER_NAME, BASETEN_PROVIDER_ID, BASETEN_PROVIDER_NAME,
|
||||
CompactionResult, DisabledReason, GOOGLE_PROVIDER_ID, GOOGLE_PROVIDER_NAME, LanguageModel,
|
||||
LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelEffortLevel,
|
||||
LanguageModelId, LanguageModelName, LanguageModelProviderId, LanguageModelProviderName,
|
||||
LanguageModelRequest, LanguageModelToolChoice, LanguageModelToolSchemaFormat,
|
||||
OPEN_AI_PROVIDER_ID, OPEN_AI_PROVIDER_NAME, RateLimiter, X_AI_PROVIDER_ID, X_AI_PROVIDER_NAME,
|
||||
ZED_CLOUD_PROVIDER_ID, ZED_CLOUD_PROVIDER_NAME,
|
||||
};
|
||||
|
||||
@@ -504,6 +504,7 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
use cloud_llm_client::LanguageModelProvider::*;
|
||||
match self.model.provider {
|
||||
Anthropic => ANTHROPIC_PROVIDER_ID,
|
||||
Baseten => BASETEN_PROVIDER_ID,
|
||||
OpenAi => OPEN_AI_PROVIDER_ID,
|
||||
Google => GOOGLE_PROVIDER_ID,
|
||||
XAi => X_AI_PROVIDER_ID,
|
||||
@@ -514,6 +515,7 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
use cloud_llm_client::LanguageModelProvider::*;
|
||||
match self.model.provider {
|
||||
Anthropic => ANTHROPIC_PROVIDER_NAME,
|
||||
Baseten => BASETEN_PROVIDER_NAME,
|
||||
OpenAi => OPEN_AI_PROVIDER_NAME,
|
||||
Google => GOOGLE_PROVIDER_NAME,
|
||||
XAi => X_AI_PROVIDER_NAME,
|
||||
@@ -613,7 +615,8 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
// Unreachable while the `supports_explicit_compaction` guard
|
||||
// above holds, but a provider mismatch should degrade to the
|
||||
// same unsupported error rather than panic.
|
||||
cloud_llm_client::LanguageModelProvider::Google
|
||||
cloud_llm_client::LanguageModelProvider::Baseten
|
||||
| cloud_llm_client::LanguageModelProvider::Google
|
||||
| cloud_llm_client::LanguageModelProvider::XAi => async {
|
||||
Err(LanguageModelCompletionError::Other(anyhow::anyhow!(
|
||||
"this cloud model does not support explicit compaction"
|
||||
@@ -649,7 +652,7 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
|
||||
fn supports_split_token_display(&self) -> bool {
|
||||
use cloud_llm_client::LanguageModelProvider::*;
|
||||
matches!(self.model.provider, OpenAi | XAi)
|
||||
matches!(self.model.provider, Baseten | OpenAi | XAi)
|
||||
}
|
||||
|
||||
fn telemetry_id(&self) -> String {
|
||||
@@ -659,6 +662,7 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
fn tool_input_format(&self) -> LanguageModelToolSchemaFormat {
|
||||
match self.model.provider {
|
||||
cloud_llm_client::LanguageModelProvider::Anthropic
|
||||
| cloud_llm_client::LanguageModelProvider::Baseten
|
||||
| cloud_llm_client::LanguageModelProvider::OpenAi => {
|
||||
LanguageModelToolSchemaFormat::JsonSchema
|
||||
}
|
||||
@@ -848,7 +852,8 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
});
|
||||
async move { Ok(future.await?.boxed()) }.boxed()
|
||||
}
|
||||
cloud_llm_client::LanguageModelProvider::XAi => {
|
||||
provider @ (cloud_llm_client::LanguageModelProvider::Baseten
|
||||
| cloud_llm_client::LanguageModelProvider::XAi) => {
|
||||
let http_client = self.http_client.clone();
|
||||
let token_provider = self.token_provider.clone();
|
||||
let request = match into_open_ai(
|
||||
@@ -877,7 +882,7 @@ impl<TP: CloudLlmTokenProvider + 'static> LanguageModel for CloudLanguageModel<T
|
||||
CompletionBody {
|
||||
thread_id,
|
||||
prompt_id,
|
||||
provider: cloud_llm_client::LanguageModelProvider::XAi,
|
||||
provider,
|
||||
model: request.model.clone(),
|
||||
provider_request: serde_json::to_value(&request).map_err(|error| {
|
||||
LanguageModelCompletionError::SerializeRequest {
|
||||
@@ -1161,6 +1166,7 @@ pub fn provider_name(
|
||||
) -> LanguageModelProviderName {
|
||||
match provider {
|
||||
cloud_llm_client::LanguageModelProvider::Anthropic => ANTHROPIC_PROVIDER_NAME,
|
||||
cloud_llm_client::LanguageModelProvider::Baseten => BASETEN_PROVIDER_NAME,
|
||||
cloud_llm_client::LanguageModelProvider::OpenAi => OPEN_AI_PROVIDER_NAME,
|
||||
cloud_llm_client::LanguageModelProvider::Google => GOOGLE_PROVIDER_NAME,
|
||||
cloud_llm_client::LanguageModelProvider::XAi => X_AI_PROVIDER_NAME,
|
||||
|
||||
Reference in new issue
Block a user