main: 增强工具调用与消息流程
- 支持 tool.call 和 tool.result 消息类型处理 - 引入 Tool 调度与执行逻辑,支持超时与结果截断 - 增加 ToolRegistry 和 ToolExecutor 管理工具定义与执行 - 更新上下文构建与消息映射逻辑,适配工具闭环处理 - 扩展配置与环境变量,支持 Tool 调用相关选项 - 增强单元测试覆盖工具调用与执行情景 - 更新文档和 OpenAPI,新增工具相关说明与模型定义
This commit is contained in:
@@ -35,6 +35,25 @@ class OpenAiEventNormalizer
|
||||
if (is_string($content) && $content !== '') {
|
||||
$events[] = ProviderEvent::messageDelta($content);
|
||||
}
|
||||
|
||||
if (isset($delta['tool_calls']) && is_array($delta['tool_calls'])) {
|
||||
$toolCalls = [];
|
||||
foreach ($delta['tool_calls'] as $toolCall) {
|
||||
if (! is_array($toolCall)) {
|
||||
continue;
|
||||
}
|
||||
$toolCalls[] = [
|
||||
'id' => $toolCall['id'] ?? null,
|
||||
'name' => $toolCall['function']['name'] ?? null,
|
||||
'arguments' => $toolCall['function']['arguments'] ?? '',
|
||||
'index' => $toolCall['index'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
if (! empty($toolCalls)) {
|
||||
$events[] = ProviderEvent::toolDelta(['tool_calls' => $toolCalls]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($firstChoice) && array_key_exists('finish_reason', $firstChoice) && $firstChoice['finish_reason'] !== null) {
|
||||
|
||||
Reference in New Issue
Block a user