language_model: Add supports_tools
method to LanguageModel
(#27867)
This PR adds a new `supports_tools` method to the `LanguageModel` trait to indicate whether a given model supports tool use. Release Notes: - N/A
This commit is contained in:
parent
4ff07bf789
commit
5880271b11
12 changed files with 56 additions and 0 deletions
|
@ -153,6 +153,10 @@ impl LanguageModel for FakeLanguageModel {
|
||||||
provider_name()
|
provider_name()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
"fake".to_string()
|
"fake".to_string()
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,6 +185,9 @@ pub trait LanguageModel: Send + Sync {
|
||||||
LanguageModelAvailability::Public
|
LanguageModelAvailability::Public
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether this model supports tools.
|
||||||
|
fn supports_tools(&self) -> bool;
|
||||||
|
|
||||||
fn tool_input_format(&self) -> LanguageModelToolSchemaFormat {
|
fn tool_input_format(&self) -> LanguageModelToolSchemaFormat {
|
||||||
LanguageModelToolSchemaFormat::JsonSchema
|
LanguageModelToolSchemaFormat::JsonSchema
|
||||||
}
|
}
|
||||||
|
|
|
@ -400,6 +400,10 @@ impl LanguageModel for AnthropicModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("anthropic/{}", self.model.id())
|
format!("anthropic/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -365,6 +365,10 @@ impl LanguageModel for BedrockModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("bedrock/{}", self.model.id())
|
format!("bedrock/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -557,6 +557,14 @@ impl LanguageModel for CloudLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
match self.model {
|
||||||
|
CloudModel::Anthropic(_) => true,
|
||||||
|
CloudModel::Google(_) => true,
|
||||||
|
CloudModel::OpenAi(_) => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("zed.dev/{}", self.model.id())
|
format!("zed.dev/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,6 +180,15 @@ impl LanguageModel for CopilotChatLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
match self.model {
|
||||||
|
CopilotChatModel::Claude3_5Sonnet
|
||||||
|
| CopilotChatModel::Claude3_7Sonnet
|
||||||
|
| CopilotChatModel::Claude3_7SonnetThinking => true,
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("copilot_chat/{}", self.model.id())
|
format!("copilot_chat/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,6 +279,10 @@ impl LanguageModel for DeepSeekLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("deepseek/{}", self.model.id())
|
format!("deepseek/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,6 +296,10 @@ impl LanguageModel for GoogleLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
fn tool_input_format(&self) -> LanguageModelToolSchemaFormat {
|
fn tool_input_format(&self) -> LanguageModelToolSchemaFormat {
|
||||||
LanguageModelToolSchemaFormat::JsonSchemaSubset
|
LanguageModelToolSchemaFormat::JsonSchemaSubset
|
||||||
}
|
}
|
||||||
|
|
|
@ -273,6 +273,10 @@ impl LanguageModel for LmStudioLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("lmstudio/{}", self.model.id())
|
format!("lmstudio/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,6 +291,10 @@ impl LanguageModel for MistralLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("mistral/{}", self.model.id())
|
format!("mistral/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -300,6 +300,10 @@ impl LanguageModel for OllamaLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("ollama/{}", self.model.id())
|
format!("ollama/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,6 +290,10 @@ impl LanguageModel for OpenAiLanguageModel {
|
||||||
LanguageModelProviderName(PROVIDER_NAME.into())
|
LanguageModelProviderName(PROVIDER_NAME.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_tools(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
fn telemetry_id(&self) -> String {
|
fn telemetry_id(&self) -> String {
|
||||||
format!("openai/{}", self.model.id())
|
format!("openai/{}", self.model.id())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue