Skip to content

Commit f3b9a78

Browse files
committed
Fix using output_text as type for assistant role
1 parent 40e6601 commit f3b9a78

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

crates/llm/src/openai_responses.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,16 @@ impl OpenAIResponsesClient {
525525
for message in messages {
526526
match message.content {
527527
MessageContent::Text(text) => {
528+
let content_item = match message.role {
529+
MessageRole::User => ResponseContentItem::InputText { text },
530+
MessageRole::Assistant => ResponseContentItem::OutputText { text },
531+
};
528532
result.push(ResponseInputItem::Message {
529533
role: match message.role {
530534
MessageRole::User => "user".to_string(),
531535
MessageRole::Assistant => "assistant".to_string(),
532536
},
533-
content: vec![ResponseContentItem::InputText { text }],
537+
content: vec![content_item],
534538
});
535539
}
536540
MessageContent::Structured(blocks) => {
@@ -1454,6 +1458,35 @@ mod tests {
14541458
}
14551459
}
14561460

1461+
#[test]
1462+
fn test_convert_assistant_text_message() {
1463+
let client = OpenAIResponsesClient::new(
1464+
"test_key".to_string(),
1465+
"gpt-5".to_string(),
1466+
"https://api.openai.com/v1".to_string(),
1467+
);
1468+
1469+
// Test that assistant messages with simple text use OutputText, not InputText
1470+
let messages = vec![Message::new_assistant("Hello from assistant")];
1471+
1472+
let converted = client.convert_messages(messages);
1473+
assert_eq!(converted.len(), 1);
1474+
1475+
match &converted[0] {
1476+
ResponseInputItem::Message { role, content } => {
1477+
assert_eq!(role, "assistant");
1478+
assert_eq!(content.len(), 1);
1479+
match &content[0] {
1480+
ResponseContentItem::OutputText { text } => {
1481+
assert_eq!(text, "Hello from assistant");
1482+
}
1483+
_ => panic!("Expected OutputText for assistant message"),
1484+
}
1485+
}
1486+
_ => panic!("Expected Message"),
1487+
}
1488+
}
1489+
14571490
#[test]
14581491
fn test_convert_tool_result_message() {
14591492
let client = OpenAIResponsesClient::new(

0 commit comments

Comments
 (0)