Apply ensure_ascii=False to remaining LLM services and fix changelog format
This commit is contained in:
@@ -1,16 +1 @@
|
||||
# Reduce Call Tool Result Context Size by Allowing UTF-8 in JSON Serialization
|
||||
|
||||
This PR changes tool result serialization to prevent UTF-8 code points from being escaped during serialization. This drastically reduces the context size when returning a response that contains languages other than English.
|
||||
|
||||
We have been running a monkey-patched version in production and it helped us improve the agent accuracy and control cost better.
|
||||
|
||||
```
|
||||
>>> data = { "message": "أهلًا بالعالم" }
|
||||
>>> json.dumps(data)
|
||||
'{"message": "\\u0623\\u0647\\u0644\\u064b\\u0627 \\u0628\\u0627\\u0644\\u0639\\u0627\\u0644\\u0645"}'
|
||||
>>>
|
||||
>>>
|
||||
>>>
|
||||
>>> json.dumps(data, ensure_ascii=False)
|
||||
'{"message": "أهلًا بالعالم"}'
|
||||
```
|
||||
- Changed tool result JSON serialization to use `ensure_ascii=False`, preserving UTF-8 characters instead of escaping them. This reduces context size and token usage for non-English languages.
|
||||
|
||||
@@ -1044,7 +1044,9 @@ class AWSNovaSonicLLMService(LLMService):
|
||||
"toolResult": {
|
||||
"promptName": self._prompt_name,
|
||||
"contentName": content_name,
|
||||
"content": json.dumps(result) if isinstance(result, dict) else result,
|
||||
"content": json.dumps(result, ensure_ascii=False)
|
||||
if isinstance(result, dict)
|
||||
else result,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +200,9 @@ class GoogleAssistantContextAggregator(OpenAIAssistantContextAggregator):
|
||||
if message.role == "user":
|
||||
for part in message.parts:
|
||||
if part.function_response and part.function_response.id == tool_call_id:
|
||||
part.function_response.response = {"value": json.dumps(result)}
|
||||
part.function_response.response = {
|
||||
"value": json.dumps(result, ensure_ascii=False)
|
||||
}
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -939,7 +939,7 @@ class GrokRealtimeLLMService(LLMService):
|
||||
item = events.ConversationItem(
|
||||
type="function_call_output",
|
||||
call_id=tool_call_id,
|
||||
output=json.dumps(result),
|
||||
output=json.dumps(result, ensure_ascii=False),
|
||||
)
|
||||
await self.send_client_event(events.ConversationItemCreateEvent(item=item))
|
||||
|
||||
|
||||
@@ -1128,7 +1128,7 @@ class OpenAIRealtimeLLMService(LLMService):
|
||||
item = events.ConversationItem(
|
||||
type="function_call_output",
|
||||
call_id=tool_call_id,
|
||||
output=json.dumps(result),
|
||||
output=json.dumps(result, ensure_ascii=False),
|
||||
)
|
||||
await self.send_client_event(events.ConversationItemCreateEvent(item=item))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user