CosmosShadow / GeneralAgent

A python native agent framework
424 stars 52 forks source link

agent的run函数与user_input执行逻辑和结果不一样 #25

Closed AdamvvYau closed 2 weeks ago

AdamvvYau commented 3 weeks ago

用问诊保存病历的例子,用user_input是可以保存病历的,但如果是run则不会执行代码保存病历。

问题是用user_input总是会输出LLM的中间过程,我只相要最终的输出结果。该如何使用?谢谢!

jayceftg commented 3 weeks ago

直接使用user_input没有LLM的中间过程?用的GPT-4o,是用的后端大模型不一样?

AdamvvYau commented 3 weeks ago

用的是GPT-4o。 用user_input input时有输出中间过程,我想要得到的是最终结果,不要中间过程,因为中间过程会显示python的源码,显示给用户不太好。 result = agent.user_input(query) 这里result返回的并不是最终结果,更像是第一次调用方法返回的结果。

jayceftg commented 3 weeks ago

这个保存病例是保存在txt文件中的吧,我试了一下里面都不会有python代码。当然这个保存的逻辑可以改。 ’ def save_medical_record(medical_record): """ 保存病历 @param medical_record: 病历内容 """

print(medical_record)

with open('medical_record.txt', 'a') as f:
    f.write(medical_record)
global stop
stop = True
return "病历已保存"

AdamvvYau commented 3 weeks ago

可能是我没说清楚,我要做的是个查询功能,获取当天的生产工单列表。 def today_workorder_list() -> str: """ 获取今日工单列表,返回今日所有工单的工单号、产品编码、工单数量、完成数量、生产工序 """ rows = workorder.today_workorder_list('70602564') if not rows: return "今天没有工单" else: return json.dumps(rows,ensure_ascii=False) result = agent.user_input(query)

Agent输出的结果如以下文件,输出中间过程和代码,我想要的结果是“### 今天工单的生产情况”起以下的部分, 而result = agent.user_input(query) 返回的result 是以下文件中output的部分,也即上面这个函数返回的数据,不是LLM处理后的最终结果。

我期望输出的是如下图这部分,可以怎么做呢?

LLM输出结果.txt

20241112081847

AdamvvYau commented 3 weeks ago

提示词如下:

mes_role = """ 你是一个工厂的生产主管。你了解工厂所有工单的生产情况,包括今天生产的所有工单、每个工单的完成数量、以及每个工序有哪些工单。 你可以回答以下问题: 1、今天有哪些工单? 2、今天有哪些工单已经完成? 3、今天有多少工单? 4、今天有多少工单未完成? 5、今天每个工序有哪些工单? 6、每个工序的完成进度如何?

当用户询问工单情况时,你需要从 today_workorder_list 这个函数获取工单列表, 此列表包含工单的工单号、产品编码、工单数量、完成数量、生产工序、日期,以及此次查询的查询时间, 当查询时间比当前时间晚2个小时以上时(包括2个小时),需要重新查询一次工单列表。 直接输出python代码,根据函数返回的结果整理回答用户的问题,你只需输出用户想看到的信息,不要输出推算过程。

today_workorder_list() -> str """

上面的用户问题是:今天工单的生产情况如何?

AdamvvYau commented 3 weeks ago

如果result = agent.user_input(query),这里返回的是最终LLM的输出结果就好了,怎么样才能做到呢?

jayceftg commented 3 weeks ago

我这没你那个today_workorder_list的函数,但你那个是prompt格式不太标准吧,试了试‘""" 你是一个工厂的生产主管。 你的主要工作: 和用户沟通,确认生产情况,记录生产报告。

1、生产沟通例子

用户: 今天生产情况怎么样? 你: 需要查看哪个车间的? 用户: A车间 你: A车间今天有几个工单在生产,让我查询一下具体完成情况 用户: 好的 你: ....

当生产情况确认,直接输出python代码,使用 save_medical_record 函数保存生产报告。

medical_record = \"\"\"

今天工单的生产情况

目前共有3个工单正在生产中:

各工序工单分布: