Skip to content

Commit a0eadc4

Browse files
authored
Merge pull request #47 from scaleapi/task_message_converters
Add convert util func TaskMessages to OAI agents lib
2 parents cc4b5fe + dad08cc commit a0eadc4

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies = [
3232
"jinja2>=3.1.3,<4",
3333
"mcp[cli]>=1.4.1",
3434
"scale-gp>=0.1.0a59",
35-
"openai-agents>=0.0.7",
35+
"openai-agents>=0.0.7,!=0.2.3", # 0.2.3 bug - https://github.com/openai/openai-agents-python/issues/1276
3636
"tzlocal>=5.3.1",
3737
"tzdata>=2025.2",
3838
"pytest>=8.4.0",
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from agentex.types.task_message import TaskMessage
2+
from agentex.types.text_content import TextContent
3+
from agentex.types.tool_request_content import ToolRequestContent
4+
from agentex.types.tool_response_content import ToolResponseContent
5+
import json
6+
from agents import TResponseInputItem
7+
8+
9+
def convert_task_messages_to_oai_agents_inputs(
10+
task_messages: list[TaskMessage],
11+
) -> list[TResponseInputItem]:
12+
"""
13+
Convert a list of TaskMessages to a list of OpenAI Agents SDK inputs (TResponseInputItem).
14+
15+
Args:
16+
task_messages: The list of TaskMessages to convert.
17+
18+
Returns:
19+
A list of OpenAI Agents SDK inputs (TResponseInputItem).
20+
"""
21+
converted_messages = []
22+
for task_message in task_messages:
23+
task_message_content = task_message.content
24+
if isinstance(task_message_content, TextContent):
25+
converted_messages.append(
26+
{
27+
"role": (
28+
"user" if task_message_content.author == "user" else "assistant"
29+
),
30+
"content": task_message_content.content,
31+
}
32+
)
33+
elif isinstance(task_message_content, ToolRequestContent):
34+
converted_messages.append(
35+
{
36+
"type": "function_call",
37+
"call_id": task_message_content.tool_call_id,
38+
"name": task_message_content.name,
39+
"arguments": json.dumps(task_message_content.arguments),
40+
}
41+
)
42+
elif isinstance(task_message_content, ToolResponseContent):
43+
content_str = (
44+
task_message_content.content
45+
if isinstance(task_message_content.content, str)
46+
else json.dumps(task_message_content.content)
47+
)
48+
converted_messages.append(
49+
{
50+
"type": "function_call_output",
51+
"call_id": task_message_content.tool_call_id,
52+
"output": content_str,
53+
}
54+
)
55+
else:
56+
raise ValueError(
57+
f"Unsupported content type for converting TaskMessage to OpenAI Agents SDK input: {type(task_message.content)}"
58+
)
59+
60+
return converted_messages

0 commit comments

Comments
 (0)