AI 大模型之美
徐文浩
bothub 创始人
32335 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
AI 大模型之美
15
15
1.0x
00:00/00:00
登录|注册

17 | 让AI做决策,LangChain里的“中介”和“特工”

特工(自主行动能力)
代理人(中介)
直接返回Tool的回答
支持多轮对话
LLMChain
VectorStore
Memory
Agent
FAQ咨询
售中咨询
导购咨询
直接调用内部查询订单状态等功能
封装不同类型的LLMChain
执行选中的Tool进行行动
根据问题和Tool描述做出选择
根据用户问题选择合适的LLMChain
集成内部查询功能
支持多轮对话
分而治之的策略
自动选择合适的工具(Tool)
支持多种单项能力
中介与特工(Agent)
实现自然语言处理复杂任务
集成AI语言理解、组织能力、外部资料和API
AI21 Labs相关研究
如何使用EntityMemory查询订单信息
如何让AI用中文回复FAQ问题
优化
组件
功能
Tool
Agent
选择题
功能
核心概念
介绍
推荐阅读
思考题
实现电商客服聊天机器人
AI决策
Langchain
Langchain与AI决策

该思维导图由 AI 生成,仅供参考

你好,我是徐文浩。
第 11 讲里,我为你讲解了如何把各种资料的内容向量化,然后通过 llama-index 建立对应的索引,实现对我们自己的文本资料的问答。而在过去的 3 讲里面,我们又深入了解了如何使用 Langchain。Langchain 能够便于我们把 AI 对语言的理解和组织能力、外部各种资料或者 SaaS 的 API,以及你自己撰写的代码整合到一起来。通过对这些能力的整合,我们就可以通过自然语言完成更加复杂的任务了,而不仅仅只是能闲聊。
不过,到目前为止。我们所有基于 ChatGPT 的应用,基本都是“单项技能”,比如前面关于“藤野先生”的问题,或者上一讲里查询最新的天气或者通过 Python 算算术。本质上都是限制 AI 只针对我们预先索引的数据,或者实时搜索的数据进行回答。

支持多种单项能力,让 AI 做个选择题

但是,如果我们真的想要做一个能跑在生产环境上的 AI 聊天机器人,我们需要的不只一个单项技能。它应该针对你自己的数据有很多个不同的“单项技能”,就拿我比较熟悉的电商领域来说,我们至少需要这样三个技能。
我们需要一个“导购咨询”的单项技能,能够查询自己商品库里的商品信息为用户做导购和推荐。
然后需要一个“售中咨询”的单项技能,能够查询订单的物流轨迹,对买了东西还没有收到货的用户给出安抚和回复。
最后还需要一个“FAQ”的单项技能,能够把整个电商网站的 FAQ 索引起来,当用户问到退货政策、运费、支付方式等问题的时候,我们可以从 FAQ 里面拿到对应的答案,回复给用户。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
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归属地:广东
    3
    8
  • 一叶
    老师,这是我让让用中文回答的代码,你看下这样对不对? 或是说还有更加简单的方法? ```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归属地:浙江
    2
    2
  • 智能
    所以这里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归属地:北京
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部