fix: expose tool not support error (#2228)

This commit is contained in:
Yingjie He
2025-04-16 13:13:42 -07:00
committed by GitHub
parent 7e4cfcdaae
commit 4f8c8fe3f5
3 changed files with 50 additions and 3 deletions

View File

@@ -75,14 +75,56 @@ impl GoogleErrorCode {
}
}
#[derive(serde::Deserialize)]
#[derive(serde::Deserialize, Debug)]
pub struct OpenAIError {
#[serde(deserialize_with = "code_as_string")]
pub code: Option<String>,
pub message: Option<String>,
#[serde(rename = "type")]
pub error_type: Option<String>,
}
fn code_as_string<'de, D>(deserializer: D) -> Result<Option<String>, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::de::{self, Visitor};
use std::fmt;
struct CodeVisitor;
impl Visitor<'_> for CodeVisitor {
type Value = Option<String>;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a string or a number for the code field")
}
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(Some(value.to_string()))
}
fn visit_u64<E>(self, value: u64) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(Some(value.to_string()))
}
fn visit_none<E>(self) -> Result<Self::Value, E>
where
E: de::Error,
{
Ok(None)
}
}
deserializer.deserialize_any(CodeVisitor)
}
impl OpenAIError {
pub fn is_context_length_exceeded(&self) -> bool {
if let Some(code) = &self.code {

View File

@@ -20,7 +20,12 @@ pub const OPENROUTER_DEFAULT_MODEL: &str = "anthropic/claude-3.5-sonnet";
pub const OPENROUTER_MODEL_PREFIX_ANTHROPIC: &str = "anthropic";
// OpenRouter can run many models, we suggest the default
pub const OPENROUTER_KNOWN_MODELS: &[&str] = &[OPENROUTER_DEFAULT_MODEL];
pub const OPENROUTER_KNOWN_MODELS: &[&str] = &[
"anthropic/claude-3.5-sonnet",
"anthropic/claude-3.7-sonnet",
"google/gemini-2.5-pro-exp-03-25:free",
"deepseek/deepseek-r1",
];
pub const OPENROUTER_DOC_URL: &str = "https://openrouter.ai/models";
#[derive(serde::Serialize)]

View File

@@ -10,7 +10,7 @@
"license": {
"name": "Apache-2.0"
},
"version": "1.0.17"
"version": "1.0.18"
},
"paths": {
"/agent/tools": {