当前位置:   article > 正文

【AI】知识库,Chain,Agent,提示词工程_agent提示词

agent提示词

1. 用一个例子来解释知识库、chain、agent 的区别

假设你需要 AI 帮你制定一份旅游计划。

1.1 知识库

你对 AI 问:“去 XX 地的机票是多少钱”。然后AI 通过 API 帮你查到个个航空公司各个时间段的机票信息,这个就是知识库。

  1. 从文本中构建知识库
  2. 将知识库构建为向量库
  3. 用问题在向量库中查询相似度最高的文本
  4. 将问题和匹配文本一起生成一个prompt
  5. 将生成的prompt发送给大模型,并获取大模型返回的数据

1.2 Chain

假如对话是这样的:

  1. AI:我是你的旅游小助手,我擅长制定旅游攻略计划,如果你需要要求旅游,请对我说:“我想去旅游”。
  2. 你:“我想去旅游。”
  3. AI:“好的,请告诉我你想去哪里?什么时间?用什么交通工具?”
  4. 你:“我想去XX,XXXX.XX xx:xx去,坐飞机”
  5. AI:“需要帮你订目的地的酒店么?如果需要,请告诉我你希望的价格范围。”
  6. 你:“需要,500-1000 之间”
  7. AI:好的,我为你列出来推荐信息:
- 航班:你可以选择 A: … B: … C: …
- 酒店:...
- 当地的景点:...
- 当地的美食:...
  • 1
  • 2
  • 3
  • 4

AI 按照流程(SOP)对你进行反问,然后按照固定的步骤进行多次知识库调用,最后把答案列给你,这种工作方式就是 chain。

1.3 Agent

Agent 在实际上是把 SOP 中的某些判断工作交给了 AI,而且它还有短期和长期记忆。Agent 里有个 tools 的概念,tools 可以是一个API,一个知识库,一个 chain,甚至是另一个 agent。而选择哪个tool来完成任务交给计划(plain)和大模型来负责。假设你直接对大模型说:“我想去旅游”,大模型的正常反应是这样的:

  1. 你:“我想去旅游”
  2. AI:“很好呀!旅行是一种很好的放松方式,也是体验新事物的好机会。您可以告诉我您想去哪里旅游吗?我可以为您提供一些相关信息和建议。”
  3. 你:“我想去青岛”
  4. AI:“青岛是中国山东省的一个城市,以其美丽的海滨风光和丰富的啤酒文化而闻名。以下是一些关于青岛旅游的信息:1)… 2) …”

如果你向一个 agent 提问,它就应该可以自然的过度到上面 chain 的流程上,而且它还可给你订闹钟,添加提醒到日历,并且在你下次问到这个问题是把你原来的计划找出来跟你确认。chain 就是 agent 的一个 tool,大模型会根据你的提问把合适的 tool 拿出来用。而 tool 在嵌入的 agent时需要自我介绍,告诉大模型它的功能和使用范围。

2 官方解释

2.1 RAG 系统包含两个主要组件

  • 检索模块:该模块负责从一个大规模的数据集或知识库中检索相关信息。它采用一种检索式机制,根据输入查询或上下文内容快速定位到最相关的文档或片段。
  • 生成模块:检索出的相关信息随后被输入到一个大型语言模型(如 GPT 系列或其他变体),这个模型基于检索到的内容生成连贯、精准的回答或文本输出。通过这种方式,生成模型能够利用实际存在的数据源,而不是完全依赖于自身的参数来生成信息,从而减少了错误传播并增强了生成内容的真实性和可靠性。

2.2 Agent

Agents可以看做是一个智能化的流程封装。它基于LLM的CoT能力,动态串联多个Tool或Chain,完成对复杂问题的自动推导和执行解决。

Tool可以认为是Agent中每个单独功能的封装,这些功能可以由第三方在线服务,本地服务,本地可执行程序等不同方式实现,通过开发者自定义Tools封装。通过定义不同的tool,agent就能够通过tool的描述,拼装相关提示,让LLM在特定场景下选择特定的tool来完成任务。可以说,agent的能力很大程度上取决于tool池的深度和广度,以及LLM如何选择tool的能力。

3 提示词工程

语言模型分为两种,一种是基础模型,一种是提示词模型。模型是以“文字接龙”的方式根据训练内容来”猜“你传给大模型后面的内容。比如你问“比天空更广阔的是什么?”,基础大模型可能会回答你“比天空更广阔的,是男人的胸怀。”因为这个大模型训练时可能收集了天之蓝的广告。而提示词模型会预先设定提示词“你是一个科学百科小助手”,所以它会告诉你“天空的上方是太空,太空比天空更广阔”。

3.1 设计提示词时有三个原则

3.1.1 给出清晰而具体的描述

用特殊符号,比如```text```,”””, <>, 来分割内容,使得大模型可以区分哪些是你的提示词,哪些是要处理的文本。
告诉大模型你的结果应该用什么格式输出,可以是 HTML、JSON或者直接给一个例子让大模型参考
检查条件是否满足完成任务所需要的假设。大模型有时候会出现幻觉,这种情况很可能是你给出的条件不能得出你想要的结论,所以为了避免大模型给出具有误导性质的回答,你可以让大模型先检查条件,如果条件不满足直接退出。
给模型一点提示。你可以给模型一个成功返回的例子,从而让模型参照这个例子来给出你想要的答案,这个例子可以展示给模型答案的语气和语境,从而精确控制你想要的到的语气和语境。

3.1.2给模型思考的时间

告诉模型完成任务的步骤。有时候一个结论的推导过程是可以拆分成多个步骤的,如果你直接让大模型回答,它可能完全是在做“填词游戏”,根本没有做任何逻辑分析。所以如果你给出推导结论的步骤,每一步要求模型给出中间结果,根据上一个结果推导下一个结论,那么就能提高最终结果的准确性。

3.1.3 告诉模型基于哪些材料回答问题

模型通常训练时引入了大量的数据,这些数据可能具有时效性和特殊的背景,而你在做知识库时通常希望模型只从你给定的数据集中寻找答案,这时候你就要告诉模型基于哪些材料回答问题。

4 当前大模型的问题和落地的难点

  1. 现有大模型在 3-6 轮对话后就开始幻想(国内3 轮,ChatGPT4 能做到 6 轮)
  2. 命中不精准
  3. 常出现导入的数据命中不了,没有用文档里的内容回答,还是在用大模型回答

4.1 解决方案

  1. 把一个大任务分成多个子任务,让每个子任务在 3-6 轮对话里结束。然后再把结果汇总
  2. ES 和向量结合:融合向量搜索和 es 搜索会极大优于单纯的向量搜索,向量是根据语意来产生关联的,对于用词重复很高的知识,ES 的效果比向量要好,比如炒菜的配料,翻来覆去就是那几个原料,这时候根据菜名在 ES 里搜索的准确度就比向量搜索高很多。
  3. 在数据预处理的时候,需要在注意切分数据时的分隔符,不要把同一份数据切成两份,这样在召回是就不准确。
  4. 召回的数据需要做筛选,把不相关或者不重要的内容拿掉。
  5. 在提问时可以考虑加上一个下拉的相似问题列表,这个列表里都是经过优化的问题,这样能至少提升 20% 的准确度。如果问题不再列表里,可以记录下来以后优化。

4.2 落地动作

  1. 列出这个行业里 50 个常出现的问题,然后在市面上寻找大模型进行尝试,挑出最好的作为底座。
  2. 给大模型一个回答的模板,让大模型按照这个模板来回答问题,从而优化大模型的输出。
  3. 引入 RAG,提升信息量。
  4. 把回答不理想的问题补充到 RAG 的数据库里
  5. 把重要的答案和回答模板在大模型上做增强训练(FT)

5 相关技术

  • 大模型:
    - 国内:天问、minimax
    - 国外:openai、cloud
    - 可微调:llama2/3
  • RAG: rags
  • Chain:langchain, langflow, flowise
  • Agent: auto_gpt
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/779215
推荐阅读
相关标签
  

闽ICP备14008679号