Function calling流程总结的步骤如下:
- 自定义函数:根据用户需求,自定义函数chen_ming_algorithm,用于处理特定的任务。
- 创建字典:根据自定义函数,创建一个字典chen_ming_function,其中包含自定义函数的信息。
- 创建functions参数:将多个包含不同函数字典的list放入一个名为functions的参数中,以便后续使用。
- 判断是否需要调用外部函数:根据用户提供的messages和functions参数,判断是否需要调用外部函数。
- 如果需要调用外部函数,执行以下操作:
- 输出assistant_message_content:根据function_call提供的信息挑选合适的函数。
- 将function call中的函数参数信息传递给函数。
- 获取函数返回结果function_response。
- 将输出结果包装为一条function message,添加到messages1中。
- 将messages1和assistant_message合并成messages2。
- 将messages2发送给外部函数库,获取second_response。
- 根据second_response生成Final message,作为最终输出结果。
- 如果不需 要调用外部函数,将messages直接发送给模型,得到second_response。
- 根据second_response生成Final message,作为最终输出结果。
用于构建Agent的function calling流程
1. **主函数get_chat_response的流程:**
- 输入用户需求messages的对象。
- 判断是否是text_response。
- 如果是text_response:
- 创建text_answer_message。
- 返回text_answer_message。
- 如果不是text_response:
- 创建function_call_message。
- 返回function_call_message。
2. **创建text answer message的流程:**
- 输入text answer message。
- 通过is_text_response_valid函数判断是否是开发模式。
- 如果是开发模式:
- 引导用户进行审查。
- 执行修改步骤(根据用户的反馈进行修改)。
- 如果不是开发模式:
- 执行不修改步骤。
- 返回new_messages。
3. **创建function call message的流程:**
- 输入function call message。
- 通过is_code_response_valid函数判断解析是否成功。
- 如果解析失败:
- 返回修改后的messages。
- 如果解析成功:
- 打印模型编写代码。
- 通过is_text_response_valid函数判断是否是开发模式。
- 如果是开发模式:
- 引导用户进行审查。
- 执行修改步骤(根据用户的反馈进行修改)。
- 如果不是开发模式:
- 执行不修改步骤。
- 返回new_messages。
4. **创建function call message流程(继续):**
- 通过check_get_final_function_response函数解析JSON类型的函数参数。
- 将function_call_message加入到初始messages中。
- 判断function_response_message是否包含报错信息。
- 如果包含报错信息:
- 在增强模式下启动深度debug模式。
- 创建多轮for循环,引导模型进行深度debug。
- 在原始messages中添加prompt,并将messages带入get_chat_response并做出回答。
- 在其他模式下启动有效debug模式。
- 创建单次for循环,引导模型进行有效debug。
- 在原始messages中添加prompt,并将messages带入get_chat_response并做出回答。
- 如果不包含报错信息:
- 返回new_messages。
这个流程描述了如何根据用户输入的消息来创建和返回不同的类型的消息,包括文本回答消息和函数调用消息。同时,它还描述了在开发模式下如何引导用户进行审查和修改,以及在出现报错时如何启动不同的debug模式来解决问题。