赞
踩
1. 定义一个assistant,具体任务由system_message定义
2. 每次human输入后,重置assistant
assistant.reset()
3.将gradio提供的ChatInterface中的chat_history进行转换,得到oai类型的message,加入到assistant的message中
- oai_messages = chat_to_oai_message(chat_history)
- assistant._oai_system_message_origin = assistant._oai_system_message.copy()
- assistant._oai_system_message += oai_messages
4.将ChatInterface输入的message给定义的userproxy,用于生成回答
- userproxy.initiate_chat(assistant, message=user_message)
- messages = userproxy.chat_messages
5.保存最新的对话历史
chat_history += oai_message_to_chat(messages, assistant)
6.将assistant的对话信息重置为最初的system_message
assistant._oai_system_message = assistant._oai_system_message_origin.copy()
原因:ChatInterface提供了回溯功能,即其chat_history可以回到任意轮的对话中,故要保持assistant的message始终为初始的定义,以保证可随时回溯。
原demo链接:https://huggingface.co/spaces/thinkall/autogen-human-input-demo
demo中也重写了逻辑,由自定义的respond函数来对chat_history进行记录,而不是gradio,具体见函数:
- async def _submit_fn(
- self,
- message: str,
- history_with_input,
- request: Request,
- *args,
- ) :
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。