Introduce LanguageModelToolUse::raw_input (#29322)
This is to enable alternative streaming solutions at the application layer. I'm not sure we really should have performed parsing of the input at this layer. Either way I want to experiment with streaming approaches in a separate crate on a branch, and this will help. /cc @maxdeviant @bennetbo @rtfeldman Closes #ISSUE Release Notes: - N/A
This commit is contained in:
parent
f125353b6f
commit
8836c6fb42
8 changed files with 13 additions and 0 deletions
|
@ -72,6 +72,7 @@ impl ToolUseState {
|
|||
.map(|tool_use| LanguageModelToolUse {
|
||||
id: tool_use.id.clone(),
|
||||
name: tool_use.name.clone().into(),
|
||||
raw_input: tool_use.input.to_string(),
|
||||
input: tool_use.input.clone(),
|
||||
is_input_complete: true,
|
||||
})
|
||||
|
|
|
@ -338,6 +338,7 @@ pub struct CountTokensResponse {
|
|||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct FunctionCall {
|
||||
pub name: String,
|
||||
pub raw_args: String,
|
||||
pub args: serde_json::Value,
|
||||
}
|
||||
|
||||
|
|
|
@ -186,6 +186,7 @@ where
|
|||
pub struct LanguageModelToolUse {
|
||||
pub id: LanguageModelToolUseId,
|
||||
pub name: Arc<str>,
|
||||
pub raw_input: String,
|
||||
pub input: serde_json::Value,
|
||||
pub is_input_complete: bool,
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@ pub fn map_to_language_model_completion_events(
|
|||
id: tool_use.id.clone().into(),
|
||||
name: tool_use.name.clone().into(),
|
||||
is_input_complete: false,
|
||||
raw_input: tool_use.input_json.clone(),
|
||||
input,
|
||||
},
|
||||
))],
|
||||
|
@ -757,6 +758,7 @@ pub fn map_to_language_model_completion_events(
|
|||
)
|
||||
.map_err(|err| anyhow!("Error parsing tool call input JSON: {err:?} - JSON string was: {input_json:?}"))?
|
||||
},
|
||||
raw_input: tool_use.input_json.clone(),
|
||||
},
|
||||
))
|
||||
})],
|
||||
|
|
|
@ -894,6 +894,7 @@ pub fn map_to_language_model_completion_events(
|
|||
id: tool_use.id.into(),
|
||||
name: tool_use.name.into(),
|
||||
is_input_complete: true,
|
||||
raw_input: tool_use.input_json.clone(),
|
||||
input: if tool_use.input_json.is_empty() {
|
||||
Value::Null
|
||||
} else {
|
||||
|
|
|
@ -368,6 +368,7 @@ pub fn map_to_language_model_completion_events(
|
|||
id: tool_call.id.into(),
|
||||
name: tool_call.name.as_str().into(),
|
||||
is_input_complete: true,
|
||||
raw_input: tool_call.arguments.clone(),
|
||||
input: serde_json::Value::from_str(
|
||||
&tool_call.arguments,
|
||||
)?,
|
||||
|
|
|
@ -396,6 +396,7 @@ pub fn into_google(
|
|||
Some(Part::FunctionCallPart(google_ai::FunctionCallPart {
|
||||
function_call: google_ai::FunctionCall {
|
||||
name: tool_use.name.to_string(),
|
||||
raw_args: tool_use.raw_input,
|
||||
args: tool_use.input,
|
||||
},
|
||||
}))
|
||||
|
@ -537,6 +538,10 @@ pub fn map_to_language_model_completion_events(
|
|||
id,
|
||||
name,
|
||||
is_input_complete: true,
|
||||
raw_input: function_call_part
|
||||
.function_call
|
||||
.raw_args
|
||||
.clone(),
|
||||
input: function_call_part.function_call.args,
|
||||
},
|
||||
)));
|
||||
|
|
|
@ -491,6 +491,7 @@ pub fn map_to_language_model_completion_events(
|
|||
id: tool_call.id.into(),
|
||||
name: tool_call.name.as_str().into(),
|
||||
is_input_complete: true,
|
||||
raw_input: tool_call.arguments.clone(),
|
||||
input: serde_json::Value::from_str(
|
||||
&tool_call.arguments,
|
||||
)?,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue