mirror of
https://github.com/LiteyukiStudio/nonebot-plugin-marshoai.git
synced 2025-01-26 18:12:47 +08:00
✨ 更新marsho函数以处理tool_calls,优化函数调用参数,添加占位符参数以兼容部分模型(如GLM)
This commit is contained in:
parent
7c6319b839
commit
4b2676b9fc
@ -337,6 +337,10 @@ async def marsho(
|
|||||||
)
|
)
|
||||||
# await UniMessage(str(response)).send()
|
# await UniMessage(str(response)).send()
|
||||||
choice = response.choices[0]
|
choice = response.choices[0]
|
||||||
|
# Sprint(choice)
|
||||||
|
# 当tool_calls非空时,将finish_reason设置为TOOL_CALLS
|
||||||
|
if choice.message.tool_calls != None:
|
||||||
|
choice["finish_reason"] = CompletionsFinishReason.TOOL_CALLS
|
||||||
if choice["finish_reason"] == CompletionsFinishReason.STOPPED:
|
if choice["finish_reason"] == CompletionsFinishReason.STOPPED:
|
||||||
# 当对话成功时,将dict的上下文添加到上下文类中
|
# 当对话成功时,将dict的上下文添加到上下文类中
|
||||||
context.append(
|
context.append(
|
||||||
@ -379,6 +383,9 @@ async def marsho(
|
|||||||
function_args = json.loads(
|
function_args = json.loads(
|
||||||
tool_call.function.arguments.replace("'", '"')
|
tool_call.function.arguments.replace("'", '"')
|
||||||
)
|
)
|
||||||
|
# 删除args的placeholder参数
|
||||||
|
if "placeholder" in function_args:
|
||||||
|
del function_args["placeholder"]
|
||||||
logger.info(
|
logger.info(
|
||||||
f"调用函数 {tool_call.function.name.replace('-', '.')}\n参数:"
|
f"调用函数 {tool_call.function.name.replace('-', '.')}\n参数:"
|
||||||
+ "\n".join([f"{k}={v}" for k, v in function_args.items()])
|
+ "\n".join([f"{k}={v}" for k, v in function_args.items()])
|
||||||
@ -414,15 +421,21 @@ async def marsho(
|
|||||||
)
|
)
|
||||||
func_return = f"未找到函数 {tool_call.function.name.replace('-', '.')}"
|
func_return = f"未找到函数 {tool_call.function.name.replace('-', '.')}"
|
||||||
tool_msg.append(
|
tool_msg.append(
|
||||||
ToolMessage(tool_call_id=tool_call.id, content=func_return) # type: ignore
|
ToolMessage(tool_call_id=tool_call.id, content=func_return).as_dict() # type: ignore
|
||||||
)
|
)
|
||||||
|
request_msg = context_msg + [UserMessage(content=usermsg).as_dict()] + tool_msg # type: ignore
|
||||||
response = await make_chat(
|
response = await make_chat(
|
||||||
client=client,
|
client=client,
|
||||||
model_name=model_name,
|
model_name=model_name,
|
||||||
msg=context_msg + [UserMessage(content=usermsg)] + tool_msg, # type: ignore
|
msg=request_msg, # type: ignore
|
||||||
tools=tools.get_tools_list(),
|
tools=(
|
||||||
|
tools_lists if tools_lists else None
|
||||||
|
), # TODO 临时追加函数,后期优化
|
||||||
)
|
)
|
||||||
choice = response.choices[0]
|
choice = response.choices[0]
|
||||||
|
# 当tool_calls非空时,将finish_reason设置为TOOL_CALLS
|
||||||
|
if choice.message.tool_calls != None:
|
||||||
|
choice["finish_reason"] = CompletionsFinishReason.TOOL_CALLS
|
||||||
if choice["finish_reason"] == CompletionsFinishReason.STOPPED:
|
if choice["finish_reason"] == CompletionsFinishReason.STOPPED:
|
||||||
|
|
||||||
# 对话成功 添加上下文
|
# 对话成功 添加上下文
|
||||||
|
@ -163,8 +163,14 @@ class Caller:
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
**{
|
||||||
key: value.data() for key, value in self._parameters.items()
|
key: value.data() for key, value in self._parameters.items()
|
||||||
},
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "占位符,用于显示在对话框中", # 为保证兼容性而设置的无用参数
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
key
|
key
|
||||||
|
@ -95,6 +95,7 @@ async def make_chat(
|
|||||||
messages=msg,
|
messages=msg,
|
||||||
model=model_name,
|
model=model_name,
|
||||||
tools=tools,
|
tools=tools,
|
||||||
|
tool_choice="auto",
|
||||||
temperature=config.marshoai_temperature,
|
temperature=config.marshoai_temperature,
|
||||||
max_tokens=config.marshoai_max_tokens,
|
max_tokens=config.marshoai_max_tokens,
|
||||||
top_p=config.marshoai_top_p,
|
top_p=config.marshoai_top_p,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user