• 孟健
    2023-04-14 来自广东
    最近的autogpt,agentgpt是不是都是这个思路

    作者回复: 对,其实都是和 ReAct 以及 MRKL 这两片论文的思路一脉相承的。其实看过点Langchain源码看那个基本上立刻就能想明白那个可以怎么做到。

    共 3 条评论
    7
  • 一叶
    2023-04-14 来自福建
    老师,这是我让让用中文回答的代码,你看下这样对不对? 或是说还有更加简单的方法? ```python from langchain import LLMChain from langchain.agents import Tool, AgentExecutor, ZeroShotAgent import os from langchain.chat_models import ChatOpenAI def search_order(input: str) -> str: return "订单状态:已发货;发货日期:2023-01-01;预计送达时间:2023-01-10" def recommend_product(input: str) -> str: return "红色连衣裙" def faq(intput: str) -> str: return "7天无理由退货" tools = [ Tool( name="Search Order", func=search_order, description="useful for when you need to answer questions about customers orders" # 当您需要回答有关客户订单的问题时很有用 ), Tool(name="Recommend Product", func=recommend_product, description="useful for when you need to answer questions about product recommendations" # 你需要回答关于产品推荐的问题时很有用 ), Tool(name="FAQ", func=faq, description="useful for when you need to answer questions about shopping policies, like return policy, shipping policy, etc." # 当您需要回答关于购物政策的问题时,例如退货政策、运输政策等,这将非常有用。 ) ] PREFIX = """Answer the following questions as best you can. You have access to the following tools: (所有的回答都用中文返回)""" prompt_ = ZeroShotAgent.create_prompt( tools, prefix=PREFIX, input_variables=["input", "agent_scratchpad"] ) llm_chain = LLMChain(llm=ChatOpenAI(temperature=0), prompt=prompt_) agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True) agent_chain = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, verbose=True) result = agent_chain.run("我有一张订单,订单号是 2022ABCDE,一直没有收到,能麻烦帮我查一下吗?") print(result) ```
    展开

    作者回复: 👍,我其实就是想要大家 1. 理解这件事情是通过Prompt来解决 2. 去看一下Langchain的文档,看看怎么根据自己的需要修改Prompt

    
    4
  • Leo
    2023-05-04 来自浙江
    老师,我想基于这个做一个对人的检索,用户输入姓名、年龄、性别等能找到相关的人,这个用embedding index能实现吗?或者有其他思路可以实现吗?求解答

    作者回复: 1. 这个肯定不适合用embedding,简单的数据库SQL就可以了 2. 这个应用涉及到PII这样的个人隐私信息,不要做,容易违法

    共 2 条评论
    2
  • 智能
    2023-04-14 来自北京
    所以这里chatGPT其实相当于一个调度者?识别用户意图然后调用其他应用

    作者回复: 其实比调度者更加“高级”,你可以认为我们其实是通过提示语,让ChatGPT模拟人思考问题的过程

    
    2
  • 李蕾
    2023-04-19 来自广东
    关于老师思考题的第一个问题,经过自己的尝试,比较简单的方式是在Template中明确要求必须用中文返回即可。 answer_order_info = PromptTemplate( template="请把下面的订单信息用中文回复给用户: \n\n {order}?", input_variables=["order"]) 我的第一想法和Geek_4ec46c一样,也是尝试着在Prompt中规定返回必须是中文,但是没有生效,可能是自己当前的功力不够导致的bug,哈哈

    作者回复: 可以去看一下对应文档,通过 ai_prefix 的参数来操作,而不需要整个PromptTemplate重写。

    
    1
  • 树静风止
    2023-04-17 来自北京
    这么强大超期的课程,人怎么这么少呢

    作者回复: 欢迎宣传转发给你的朋友们😊

    
    1
  • Jacob.C
    2023-04-14 来自广东
    老师,请问 agent 的 一个 tool如果需要 llm 做两件事再回来,应该怎么玩呢?

    作者回复: 那就用一个前两讲介绍过的 SequentialChain 作为LLMChain呀。Tool封装一下这个SequentialChain的LLMChain就好了。

    
    1
  • Jacob.C
    2023-04-14 来自广东
    解决的方法也不复杂,我们只需要调整一下 search_order 这个 Tool 的提示语。通过这个提示语,Agent 会知道,这个工具就应该在找不到订单的时候,告诉用户找不到订单或者请它再次确认。这个时候,它就会根据这个答案去回复用户。下面是对应修改运行后的结果。 老师这里两段代码实在看不出来修改了啥,麻烦看出来的人说明一下!

    作者回复: 有个地方代码贴错了,编辑稍后会帮忙修正。Prompt没有更正之前是 @tool("Search Order") def search_order(input:str)->str: """useful for when you need to answer questions about customers orders""" if input.strip() == ORDER_1: return json.dumps(ORDER_1_DETAIL) elif input.strip() == ORDER_2: return json.dumps(ORDER_2_DETAIL) else: return f"对不起,根据{input}没有找到您的订单"

    
    1
  • Oli张帆
    2023-04-14 来自北京
    请教老师,第一步的Intent Detection,是不是算是zero shot的?在这种情况下,如果我给出几个输出的例子,强化一下它的输出形式,会不会效果更好?

    作者回复: 对,第一步是ZeroShot的。但是给出几个例子在整个场景的帮助可能有限,因为整个Template的Prompt里核心还是 Input,Action Input,Action Thought,Obersavation的链路。 不过都值得动手在自己的场景试一下,因为LLM对于Prompt目前还是比较敏感的,不同Prompt的效果差异还是比较大的。

    
    1
  • ~鹏~
    2023-05-18 来自北京
    请问下我用chatglm我试了下上面写的agent例子,发现不支持,这个只能openai可以用吗

    作者回复: ChatGLM的推理能力如果是 6B 的版本的话,目前还没有那么强。 对于需要相对复杂推理能力的,目前看起来还是需要 openai 或者在 llama 比较大的模型上微调才能有一定效果

    
    