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
+43 -1
View File
@@ -75,14 +75,56 @@ impl GoogleErrorCode {
} }
} }
#[derive(serde::Deserialize)] #[derive(serde::Deserialize, Debug)]
pub struct OpenAIError { pub struct OpenAIError {
#[serde(deserialize_with = "code_as_string")]
pub code: Option<String>, pub code: Option<String>,
pub message: Option<String>, pub message: Option<String>,
#[serde(rename = "type")] #[serde(rename = "type")]
pub error_type: Option<String>, 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 { impl OpenAIError {
pub fn is_context_length_exceeded(&self) -> bool { pub fn is_context_length_exceeded(&self) -> bool {
if let Some(code) = &self.code { if let Some(code) = &self.code {
+6 -1
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"; pub const OPENROUTER_MODEL_PREFIX_ANTHROPIC: &str = "anthropic";
// OpenRouter can run many models, we suggest the default // 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"; pub const OPENROUTER_DOC_URL: &str = "https://openrouter.ai/models";
#[derive(serde::Serialize)] #[derive(serde::Serialize)]
+1 -1
View File
@@ -10,7 +10,7 @@
"license": { "license": {
"name": "Apache-2.0" "name": "Apache-2.0"
}, },
"version": "1.0.17" "version": "1.0.18"
}, },
"paths": { "paths": {
"/agent/tools": { "/agent/tools": {