fix: expose tool not support error (#2228)
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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)]
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
Reference in New Issue
Block a user