mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-28 01:53:53 +08:00
fix:修复 intent_llm 模式下工具调用不上报的问题
This commit is contained in:
@@ -10,6 +10,7 @@ TTS上报功能已集成到ConnectionHandler类中。
|
||||
"""
|
||||
|
||||
import time
|
||||
import json
|
||||
import opuslib_next
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
@@ -132,6 +133,45 @@ def enqueue_tts_report(conn: "ConnectionHandler", text, opus_data):
|
||||
conn.logger.bind(tag=TAG).error(f"加入TTS上报队列失败: {text}, {e}")
|
||||
|
||||
|
||||
def enqueue_tool_report(conn: "ConnectionHandler", tool_name: str, tool_input: dict, tool_result: str = None, report_tool_call: bool = True):
|
||||
"""将工具调用数据加入上报队列
|
||||
|
||||
Args:
|
||||
conn: 连接对象
|
||||
tool_name: 工具名称
|
||||
tool_input: 工具输入参数
|
||||
tool_result: 工具执行结果(可选)
|
||||
report_tool_call: 是否上报工具调用本身,默认True;仅上报结果时设为False
|
||||
"""
|
||||
if not conn.read_config_from_api or conn.need_bind:
|
||||
return
|
||||
if conn.chat_history_conf == 0:
|
||||
return
|
||||
|
||||
try:
|
||||
timestamp = int(time.time())
|
||||
|
||||
# 构建工具调用内容
|
||||
if report_tool_call:
|
||||
tool_text = json.dumps(
|
||||
[
|
||||
{
|
||||
"type": "tool",
|
||||
"text": f"{tool_name}({json.dumps(tool_input, ensure_ascii=False)})",
|
||||
}
|
||||
]
|
||||
)
|
||||
conn.report_queue.put((3, tool_text, None, timestamp))
|
||||
|
||||
# 构建工具结果内容
|
||||
if tool_result:
|
||||
result_display = f'{{"result":"{str(tool_result)}"}}'
|
||||
result_content = json.dumps([{"type": "tool_result", "text": result_display}], ensure_ascii=False)
|
||||
conn.report_queue.put((3, result_content, None, timestamp + 1))
|
||||
except Exception as e:
|
||||
conn.logger.bind(tag=TAG).error(f"加入工具上报队列失败: {e}")
|
||||
|
||||
|
||||
def enqueue_asr_report(conn: "ConnectionHandler", text, opus_data):
|
||||
if not conn.read_config_from_api or conn.need_bind or not conn.report_asr_enable:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user