17 | 让AI做决策,LangChain里的“中介”和“特工”
该思维导图由 AI 生成,仅供参考
支持多种单项能力,让 AI 做个选择题
- 深入了解
- 翻译
- 解释
- 总结
LangChain是一种基于AI技术的语言理解和组织工具,利用llama-index建立索引,实现对文本资料的问答。文章介绍了如何使用Langchain整合AI对语言的理解和组织能力、外部资料或SaaS的API,以及自己撰写的代码,实现更复杂的任务。作者提出了在AI聊天机器人中需要支持多种单项能力的观点,并以电商领域为例,阐述了需要的三种单项技能。为了实现这一目标,作者提出了采用“分而治之”的思路,通过将每个单项技能转化为LLMChain,并让AI自行判断何时使用何种技能来回答问题。文章还给出了相应的代码示例,并展示了对不同问题的正确答案选择。这种方法可以帮助读者了解如何通过ChatGPT实现多项技能选择,并展示了LangChain在实际应用中的潜力。文章通过代码示例展示了LangChain的Agent在解决问题时的思考过程,以及如何通过设置max_iterations参数来控制AI的重试次数。这篇文章全面介绍了LangChain技术的应用和优势,对于想要了解AI问答技术的读者具有很高的参考价值。文章还提出了一些思考题,鼓励读者深入思考和探索LangChain技术的更多可能性。
《AI 大模型之美》,新⼈⾸单¥68
全部留言(37)
- 最新
- 精选
- 孟健最近的autogpt,agentgpt是不是都是这个思路
作者回复: 对,其实都是和 ReAct 以及 MRKL 这两片论文的思路一脉相承的。其实看过点Langchain源码看那个基本上立刻就能想明白那个可以怎么做到。
2023-04-14归属地:广东38 - 一叶老师,这是我让让用中文回答的代码,你看下这样对不对? 或是说还有更加简单的方法? ```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
2023-04-14归属地:福建4 - Leo老师,我想基于这个做一个对人的检索,用户输入姓名、年龄、性别等能找到相关的人,这个用embedding index能实现吗?或者有其他思路可以实现吗?求解答
作者回复: 1. 这个肯定不适合用embedding,简单的数据库SQL就可以了 2. 这个应用涉及到PII这样的个人隐私信息,不要做,容易违法
2023-05-04归属地:浙江22 - 智能所以这里chatGPT其实相当于一个调度者?识别用户意图然后调用其他应用
作者回复: 其实比调度者更加“高级”,你可以认为我们其实是通过提示语,让ChatGPT模拟人思考问题的过程
2023-04-14归属地:北京2 - 李蕾关于老师思考题的第一个问题,经过自己的尝试,比较简单的方式是在Template中明确要求必须用中文返回即可。 answer_order_info = PromptTemplate( template="请把下面的订单信息用中文回复给用户: \n\n {order}?", input_variables=["order"]) 我的第一想法和Geek_4ec46c一样,也是尝试着在Prompt中规定返回必须是中文,但是没有生效,可能是自己当前的功力不够导致的bug,哈哈
作者回复: 可以去看一下对应文档,通过 ai_prefix 的参数来操作,而不需要整个PromptTemplate重写。
2023-04-19归属地:广东1 - 树静风止这么强大超期的课程,人怎么这么少呢
作者回复: 欢迎宣传转发给你的朋友们😊
2023-04-17归属地:北京1 - Jacob.C老师,请问 agent 的 一个 tool如果需要 llm 做两件事再回来,应该怎么玩呢?
作者回复: 那就用一个前两讲介绍过的 SequentialChain 作为LLMChain呀。Tool封装一下这个SequentialChain的LLMChain就好了。
2023-04-14归属地:广东1 - Jacob.C解决的方法也不复杂,我们只需要调整一下 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}没有找到您的订单"
2023-04-14归属地:广东1 - Oli张帆请教老师,第一步的Intent Detection,是不是算是zero shot的?在这种情况下,如果我给出几个输出的例子,强化一下它的输出形式,会不会效果更好?
作者回复: 对,第一步是ZeroShot的。但是给出几个例子在整个场景的帮助可能有限,因为整个Template的Prompt里核心还是 Input,Action Input,Action Thought,Obersavation的链路。 不过都值得动手在自己的场景试一下,因为LLM对于Prompt目前还是比较敏感的,不同Prompt的效果差异还是比较大的。
2023-04-14归属地:北京1 - ~鹏~请问下我用chatglm我试了下上面写的agent例子,发现不支持,这个只能openai可以用吗
作者回复: ChatGLM的推理能力如果是 6B 的版本的话,目前还没有那么强。 对于需要相对复杂推理能力的,目前看起来还是需要 openai 或者在 llama 比较大的模型上微调才能有一定效果
2023-05-18归属地:北京