agent


【Good ending】预约会议失败场景下的流程】 小落同学用例:创建一个助手虚拟人,让其可以帮你预约会议。 目标 如题,希望让小落同学虚拟人市场里创建出来的虚拟人可以支持预约会议功能。 创建虚拟人角色 考虑到之前用小落同学的虚拟客服、虚拟女友的角色的prompt偶发会对指令出现干扰,从而导致agent在选择tool时异常,我专门在小落同学的后台新增了一个独立的、助手的角色。进入小落同学的后台后,创建一个虚拟人,名字、性别、人物模型、声音随便选一个,重点是prompt。该角色我给写的prompt是: 启动虚拟人 创建好虚拟人后,可在虚拟人市场那里直接点击启动,跳转到相应的前台页面。 开始预约会议 输入指令 帮我预约一个今天晚上8点的项目会议,邀请Jacky和顾振华参加 请求 工具选择:正确 参数解析:时间和日期全错 将解析日期参数独立出一个tool,再来一遍 在MeetingScheduler这个tool里,我判断了一下日期格式是否正确,如果不对的话,再手动调用QueryDate这个tool去重新解析日期。QueryDate的入参为前面在MeetingScheduler这个tool返回的日期参数:今天晚上8点QueryDate这个 tool的 prompt我写的是: 解析日期请求 第一次解析日期响应1 LLM返回的第一次解析日期的响应如下: 很好,果然笨的可以。那好,既然你这么笨,这道题目哥让你做三遍。 发起第二次QueryDate请求,内容格式跟第一次保持不变。 第二次解析日期响应 LLM返回的第二次解析日期的响应如下: 笨!!但是我还没放弃对你的治疗。发起第三次QueryDate请求,内容格式跟第一次保持不变。 第三次解析日期响应 LLM返回的第三次解析日期的响应如下: 哈哈。虽然你很笨,但是多试几次,你还是有机会把题目做对了的。但是你特么滴能不能按我的要求输出内容?调整QueryDate的prompt,再给你一次机会。 第四次解析日期响应 LLM返回的第四次解析日期的响应如下: 666666 看来还是可以再继续调教调教的。 最终的预约会议结果 Action: MeetingSchedulerAction Input: (‘2024-5-20′, ’20:00’, ‘不循环’, ‘项目会议’, ‘Jacky,顾振华’)Observ[DEBUG][2024-05-20 19:36:31,715][MeetingScheduler.py:80] =====================param=(‘2024-5-20′, ’20:00’, ‘不循环’, ‘项目会议’, ‘Jacky,顾振华’)Observ, type=会议预约:111111111111 […]

小落同学用例:创建一个助手虚拟人,让其可以帮你预约会议


langchain的tools经常会说:“提供的日程查询工具帮助较小,我将直接回答。” 问题现象 我加了好几个tools,希望可以在langchain的agent框架下实现一些自定义的功能,但是在实际运行过程中langchain的tools经常会说:“提供的日程查询工具帮助较小,我将直接回答。” 结论 问题分析定位的过程又臭又长,为省流直接上结论:修改调整你的prompt,以适配LLM(不同的LLM的结果不一样,如果想产品化你需要盯着一个LLM引擎自行调整prompt来适配)。 问题分析 原始请求: {‘method’: ‘post’, ‘url’: ‘/chat/completions’, ‘files’: None, ‘json_data’:{‘messages’:[{‘role’: ‘user’, ‘content’: ‘Answer the following questions as best you can.You have access to the following tools:\n\npython_executor: 此工具用于执行传入的 Python 代码片段,并返回执行结果\nScheduleAdder: 用于设置日程,使用的时候需要接受3个参数,第1个参数是时间,第2个参数是循环规则(如:\’1000100\’代表星期一和星期五循环,\’0000000\’代表不循环),第3个参数代表要执行的事项,如:(\’15:15\’, \’0000001\’, \’提醒主人叫咖啡\’)\nweather: 此工具用于获取天气预报信息,需传入英文的城市名,参数格式:Guangzhou\nCheckSensor: 此工具用于查询会议室内各种IoT设备在线状态、传感器数据、设备开关状态\nSwitch: 此工具用于控制空调、投影、窗帘、灯、终端、暖气、投屏器的开关,参数格式:(“空调”,”on”),返回True为成功\nKnowledge: 此工具用于查询XX视讯视频会议系统的专业知识,使用时请传入相关问题作为参数,例如:“XXX硬终端支持H.265+RTC的会议吗”\nScheduleDBQuery: 用于查询所有日程,返回的数据里包含3个参数:时间、循环规则(如:\’1000100\’代表星期一和星期五循环,\’0000000\’代表不循环)、执行的事项\nScheduleDBDelete: 用于删除某一个日程,接受任务id作为参数,如:2\nGetSwitchLog: 此工具用于查询会议室内的IoT设备开关当天的操作历史记录\ngetOnRunLinkage: 此工具用于查询会议室内的IoT设备当前在运行的联动,以及温度、湿度、烟感等的环境监控\nWebPageRetriever: 专门用于通过Bing搜索API快速检索和获取与特定查询词条相关的网页信息。使用 时请传入需要查询的关键词作为参数。\nWebPageScraper: 此工具用于获取网页内容,使用时请传入需要查询的网页地址作为参数,如:https://www.baidu.com/。\nKnowledgeBaseResponder: 此工具用于连接本地知识库获取问题答案,使用时请传入相关问题作为参数 ,例如:“草莓最适合的生长温度”\nMeetingScheduler: 用于预约会议,使用的时候需要接受4个参数,第1个参数是时间,第2个参数是循环规则(如:\’1000100\’代表星期一和星期五循环,\’0000000\’代表不循环),第3个参数代表要执行的事项,第4个参数代表需要参 […]

langchain的tools经常会说:“提供的日程查询工具帮助较小,我将直接回答。”