mirror of
https://github.com/katanemo/plano.git
synced 2026-06-17 15:25:17 +02:00
fix precommit and tests
This commit is contained in:
parent
3a2c1828ee
commit
58cf6b29bc
2 changed files with 35 additions and 39 deletions
|
|
@ -537,17 +537,13 @@ mod tests {
|
|||
let agent_map = HashMap::new();
|
||||
let request_headers = HeaderMap::new();
|
||||
|
||||
let initial_request = ChatCompletionsRequest {
|
||||
messages: vec![create_test_message(Role::User, "Hello")],
|
||||
model: "test-model".to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
let messages = vec![create_test_message(Role::User, "Hello")];
|
||||
|
||||
let pipeline = create_test_pipeline(vec!["nonexistent-agent", "terminal-agent"]);
|
||||
|
||||
let result = processor
|
||||
.process_filter_chain(
|
||||
&initial_request.messages,
|
||||
&messages,
|
||||
&pipeline,
|
||||
&agent_map,
|
||||
&request_headers,
|
||||
|
|
|
|||
|
|
@ -54,31 +54,31 @@ impl ProviderRequestType {
|
|||
/// This is useful for processing chat history across different provider formats
|
||||
pub fn get_message_history(&self) -> Vec<crate::apis::openai::Message> {
|
||||
use crate::apis::openai::{Message, MessageContent, Role};
|
||||
|
||||
|
||||
match self {
|
||||
Self::ChatCompletionsRequest(r) => r.messages.clone(),
|
||||
Self::MessagesRequest(r) => {
|
||||
// Convert Anthropic messages to OpenAI format
|
||||
let mut openai_messages = Vec::new();
|
||||
|
||||
|
||||
// Add system prompt as system message if present
|
||||
if let Some(system) = &r.system {
|
||||
openai_messages.push(system.clone().into());
|
||||
}
|
||||
|
||||
|
||||
// Convert each Anthropic message to OpenAI format
|
||||
for msg in &r.messages {
|
||||
if let Ok(converted_msgs) = TryInto::<Vec<Message>>::try_into(msg.clone()) {
|
||||
openai_messages.extend(converted_msgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
openai_messages
|
||||
}
|
||||
Self::BedrockConverse(r) => {
|
||||
// Convert Bedrock messages to OpenAI format
|
||||
let mut openai_messages = Vec::new();
|
||||
|
||||
|
||||
// Add system messages if present
|
||||
if let Some(system) = &r.system {
|
||||
for sys_block in system {
|
||||
|
|
@ -96,7 +96,7 @@ impl ProviderRequestType {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Convert conversation messages
|
||||
if let Some(messages) = &r.messages {
|
||||
for msg in messages {
|
||||
|
|
@ -104,7 +104,7 @@ impl ProviderRequestType {
|
|||
crate::apis::amazon_bedrock::ConversationRole::User => Role::User,
|
||||
crate::apis::amazon_bedrock::ConversationRole::Assistant => Role::Assistant,
|
||||
};
|
||||
|
||||
|
||||
// Extract text from content blocks
|
||||
let content = msg.content.iter()
|
||||
.filter_map(|block| {
|
||||
|
|
@ -116,7 +116,7 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
openai_messages.push(Message {
|
||||
role,
|
||||
content: MessageContent::Text(content),
|
||||
|
|
@ -126,13 +126,13 @@ impl ProviderRequestType {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
openai_messages
|
||||
}
|
||||
Self::BedrockConverseStream(r) => {
|
||||
// Same as BedrockConverse
|
||||
let mut openai_messages = Vec::new();
|
||||
|
||||
|
||||
if let Some(system) = &r.system {
|
||||
for sys_block in system {
|
||||
match sys_block {
|
||||
|
|
@ -149,14 +149,14 @@ impl ProviderRequestType {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if let Some(messages) = &r.messages {
|
||||
for msg in messages {
|
||||
let role = match msg.role {
|
||||
crate::apis::amazon_bedrock::ConversationRole::User => Role::User,
|
||||
crate::apis::amazon_bedrock::ConversationRole::Assistant => Role::Assistant,
|
||||
};
|
||||
|
||||
|
||||
let content = msg.content.iter()
|
||||
.filter_map(|block| {
|
||||
if let crate::apis::amazon_bedrock::ContentBlock::Text { text } = block {
|
||||
|
|
@ -167,7 +167,7 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
openai_messages.push(Message {
|
||||
role,
|
||||
content: MessageContent::Text(content),
|
||||
|
|
@ -177,13 +177,13 @@ impl ProviderRequestType {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
openai_messages
|
||||
}
|
||||
Self::ResponsesAPIRequest(r) => {
|
||||
// Convert ResponsesAPIRequest input to a user message
|
||||
let mut openai_messages = Vec::new();
|
||||
|
||||
|
||||
// Add instructions as system message if present
|
||||
if let Some(instructions) = &r.instructions {
|
||||
openai_messages.push(Message {
|
||||
|
|
@ -194,7 +194,7 @@ impl ProviderRequestType {
|
|||
tool_call_id: None,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Convert input to messages
|
||||
use crate::apis::openai_responses::{InputParam, InputItem};
|
||||
match &r.input {
|
||||
|
|
@ -218,7 +218,7 @@ impl ProviderRequestType {
|
|||
crate::apis::openai_responses::MessageRole::System => Role::System,
|
||||
crate::apis::openai_responses::MessageRole::Developer => Role::System, // Map developer to system
|
||||
};
|
||||
|
||||
|
||||
// Extract text from message content
|
||||
let content = msg.content.iter()
|
||||
.filter_map(|c| {
|
||||
|
|
@ -230,7 +230,7 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
openai_messages.push(Message {
|
||||
role,
|
||||
content: MessageContent::Text(content),
|
||||
|
|
@ -243,7 +243,7 @@ impl ProviderRequestType {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
openai_messages
|
||||
}
|
||||
}
|
||||
|
|
@ -261,7 +261,7 @@ impl ProviderRequestType {
|
|||
// Separate system messages from regular messages
|
||||
let mut system_messages = Vec::new();
|
||||
let mut regular_messages = Vec::new();
|
||||
|
||||
|
||||
for msg in messages {
|
||||
if msg.role == crate::apis::openai::Role::System {
|
||||
system_messages.push(msg.clone());
|
||||
|
|
@ -269,7 +269,7 @@ impl ProviderRequestType {
|
|||
regular_messages.push(msg.clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Set system prompt if there are system messages
|
||||
if !system_messages.is_empty() {
|
||||
// Combine all system messages into one
|
||||
|
|
@ -283,10 +283,10 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
r.system = Some(crate::apis::anthropic::MessagesSystemPrompt::Single(system_text));
|
||||
}
|
||||
|
||||
|
||||
// Convert regular messages
|
||||
r.messages = regular_messages.iter()
|
||||
.filter_map(|msg| {
|
||||
|
|
@ -297,10 +297,10 @@ impl ProviderRequestType {
|
|||
Self::BedrockConverse(r) | Self::BedrockConverseStream(r) => {
|
||||
// Convert OpenAI messages to Bedrock format
|
||||
use crate::apis::amazon_bedrock::{ContentBlock, ConversationRole, SystemContentBlock};
|
||||
|
||||
|
||||
let mut system_blocks = Vec::new();
|
||||
let mut bedrock_messages = Vec::new();
|
||||
|
||||
|
||||
for msg in messages {
|
||||
match msg.role {
|
||||
crate::apis::openai::Role::System => {
|
||||
|
|
@ -314,13 +314,13 @@ impl ProviderRequestType {
|
|||
crate::apis::openai::Role::Assistant => ConversationRole::Assistant,
|
||||
_ => continue,
|
||||
};
|
||||
|
||||
|
||||
let content = if let crate::apis::openai::MessageContent::Text(text) = &msg.content {
|
||||
vec![ContentBlock::Text { text: text.clone() }]
|
||||
} else {
|
||||
vec![]
|
||||
};
|
||||
|
||||
|
||||
bedrock_messages.push(crate::apis::amazon_bedrock::Message {
|
||||
role,
|
||||
content,
|
||||
|
|
@ -329,7 +329,7 @@ impl ProviderRequestType {
|
|||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if !system_blocks.is_empty() {
|
||||
r.system = Some(system_blocks);
|
||||
}
|
||||
|
|
@ -349,18 +349,18 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
if !system_text.is_empty() {
|
||||
r.instructions = Some(system_text);
|
||||
}
|
||||
|
||||
|
||||
// Convert user/assistant messages to InputParam
|
||||
// For simplicity, we'll use the last user message as the input
|
||||
// or combine all non-system messages
|
||||
let input_messages: Vec<_> = messages.iter()
|
||||
.filter(|msg| msg.role != crate::apis::openai::Role::System)
|
||||
.collect();
|
||||
|
||||
|
||||
if !input_messages.is_empty() {
|
||||
// If there's only one message, use Text format
|
||||
if input_messages.len() == 1 {
|
||||
|
|
@ -373,7 +373,7 @@ impl ProviderRequestType {
|
|||
let combined_text = input_messages.iter()
|
||||
.filter_map(|msg| {
|
||||
if let crate::apis::openai::MessageContent::Text(text) = &msg.content {
|
||||
Some(format!("{}: {}",
|
||||
Some(format!("{}: {}",
|
||||
match msg.role {
|
||||
crate::apis::openai::Role::User => "User",
|
||||
crate::apis::openai::Role::Assistant => "Assistant",
|
||||
|
|
@ -387,7 +387,7 @@ impl ProviderRequestType {
|
|||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
|
||||
r.input = crate::apis::openai_responses::InputParam::Text(combined_text);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue