当前位置: 代码网 > 科技>人工智能>数据分析 > 【AI大模型Agent探索】Qwen-Agent之RAG智能助手实践

【AI大模型Agent探索】Qwen-Agent之RAG智能助手实践

2024年08月01日 数据分析 我要评论
在人工智能的不断演进中,大模型如雨后春笋般涌现,它们在处理语言、生成内容、辅助决策等方面展现出令人瞩目的能力。Qwen-Agent,作为这一领域的新星,以其独特的架构和功能,为开发者提供了与这些强大模型互动的新途径。特别是其RAG(Retrieval-Augmented Generation)能力,它允许模型在生成回答前检索相关信息,极大地增强了AI助手的智能性和实用性。本文将深入探讨Qwen-Agent的RAG智能助手实践,揭示其如何通过结合AI大模型与外部工具,实现更深层次的自动化服务。

系列篇章💥

no.文章
1【qwen部署实战】探索qwen-7b-chat:阿里云大型语言模型的对话实践
2【qwen2部署实战】qwen2初体验:用transformers打造智能聊天机器人
3【qwen2部署实战】探索qwen2-7b:通过fastapi框架实现api的部署与调用
4【qwen2部署实战】ollama上的qwen2-7b:一键部署大型语言模型指南
5【qwen2部署实战】llama.cpp:一键部署高效运行qwen2-7b模型
6【qwen2部署实战】部署高效ai模型:使用vllm进行qwen2-7b模型推理
7【ai大模型agent探索】qwen-agent:基于qwen的llm应用开发框架
8【ai大模型agent探索】深入探索实践 qwen-agent 的 function calling
9【ai大模型agent探索】qwen-agent之rag智能助手实践


引言

在人工智能的不断演进中,大模型如雨后春笋般涌现,它们在处理语言、生成内容、辅助决策等方面展现出令人瞩目的能力。qwen-agent,作为这一领域的新星,以其独特的架构和功能,为开发者提供了与这些强大模型互动的新途径。特别是其rag(retrieval-augmented generation)能力,它允许模型在生成回答前检索相关信息,极大地增强了ai助手的智能性和实用性。本文将深入探讨qwen-agent的rag智能助手实践,揭示其如何通过结合ai大模型与外部工具,实现更深层次的自动化服务。

一、概述

本文专注于探索 qwen-agent 框架中的 rag(retrieval-augmented generation)功能,这一技术通过增强 ai 模型的检索能力,显著提升了智能助手的性能和应用范围。

rag 技术概览
rag 技术通过整合检索机制,允许 ai 模型在生成回答之前访问和分析大量外部数据。这种能力使得智能助手能够提供更加准确和详细的信息,尤其是在处理需要广泛背景知识的问题时。

qwen-agent 与 rag
qwen-agent 框架通过其 rag 实现,为开发者提供了构建智能助手的工具。本文将详细介绍如何在 qwen-agent 中部署和使用 rag 功能,以及如何通过它来增强 ai 助手的信息检索和生成能力。

通过一系列实践案例,本文将展示 rag 智能助手在处理文档检索和问答任务中的实际应用。这些案例将涵盖从技术配置到功能实现的完整流程,为开发者提供宝贵的参考和指导。

二、安装实操

qwen-agent 的安装部署过程简单明了,可以通过以下步骤快速开始:

   pip install -u qwen-agent

从 github 安装最新版本

   git clone https://github.com/qwenlm/qwen-agent.git
   cd qwen-agent
   pip install -e ./

安装可选依赖(如果需要内置 gui 支持):

 pip install -u qwen-agent[gui]
# 或,从源代码安装最新版本: pip install -e ./[gui]

三、本地模型部署

先采用vllm进行qwen2-7b模型部署,启用openai风格的api接口,
下载qwen2-7b-instruct 到本地/root/autodl-tmp/qwen目录,执行下面命令,启动openai风格的api接口

python -m vllm.entrypoints.openai.api_server --model /root/autodl-tmp/qwen/qwen2-7b-instruct  --served-model-name qwen2-7b-instruct --max-model-len=2048

具体参考文章:《部署高效ai模型:使用vllm进行qwen2-7b模型推理》

四、rag智能助手

1、导入依赖库

from qwen_agent.agents import assistant

# 从qwen_agent.llm模块导入get_chat_model函数
from qwen_agent.llm import get_chat_model

2、定义一个agent

# define the agent
bot = assistant(llm={'model': 'qwen2-7b-instruct','model_server': 'http://localhost:8000/v1'},
                name='assistant',
                description='使用rag检索并回答,支持文件类型:pdf/word/ppt/txt/html。')

3、机器人对话调用1

messages = [{'role': 'user', 'content': [{'text': '文章标题是什么?'}, {'file': '谜语问答游戏.docx'}]}]
for rsp in bot.run(messages):
    print(rsp)
2024-07-02 09:13:01,156 - split_query.py - 82 - info - extracted info from query: {"information": ["文章标题
2024-07-02 09:13:01,598 - memory.py - 113 - info - {"keywords_zh": ["文章标题"], "keywords_en": ["article title"], "text": "文章标题"}
2024-07-02 09:13:01,599 - simple_doc_parser.py - 326 - info - start parsing 谜语问答游戏.docx...
2024-07-02 09:13:01,656 - simple_doc_parser.py - 365 - info - finished parsing 谜语问答游戏.docx. time spent: 0.05669236183166504 seconds.
2024-07-02 09:13:01,658 - doc_parser.py - 114 - info - start chunking 谜语问答游戏.docx (谜语问答游戏.docx)...
2024-07-02 09:13:01,658 - doc_parser.py - 132 - info - finished chunking 谜语问答游戏.docx (谜语问答游戏.docx). time spent: 5.7220458984375e-05 seconds.
2024-07-02 09:13:01,659 - base_search.py - 55 - info - all tokens: 311
2024-07-02 09:13:01,660 - base_search.py - 58 - info - use full ref
[{'role': 'assistant', 'content': '文章', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“谜', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“谜语', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“谜语问答', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“谜语问答游戏', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '文章标题是“谜语问答游戏”。', 'name': 'assistant'}]

4、机器人对话调用2

messages = [{'role': 'user', 'content': [{'text': '什么东西会上升但不会下降?'}, {'file': '谜语问答游戏.docx'}]}]
for rsp in bot.run(messages):
print(rsp)

输出:

2024-07-02 09:17:03,950 - split_query.py - 82 - info - extracted info from query: {"information": ["什么东西会上升但不会下降?
2024-07-02 09:17:04,488 - memory.py - 113 - info - {"keywords_zh": ["上升", "下降"], "keywords_en": ["increase", "decrease"], "text": "什么东西会上升但不会下降?"}
2024-07-02 09:17:04,515 - simple_doc_parser.py - 324 - info - read parsed 谜语问答游戏.docx from cache.
2024-07-02 09:17:04,516 - doc_parser.py - 114 - info - start chunking 谜语问答游戏.docx (谜语问答游戏.docx)...
2024-07-02 09:17:04,516 - doc_parser.py - 132 - info - finished chunking 谜语问答游戏.docx (谜语问答游戏.docx). time spent: 3.743171691894531e-05 seconds.
2024-07-02 09:17:04,517 - base_search.py - 55 - info - all tokens: 311
2024-07-02 09:17:04,517 - base_search.py - 58 - info - use full ref
[{'role': 'assistant', 'content': '你的', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上升', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上升但', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上升但不会', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上升但不会下降', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '你的年龄会上升但不会下降。', 'name': 'assistant'}]

5、机器人对话调用3

messages = [{'role': 'user', 'content': [{'text': '什么是属于你的,但其他人比你使用它更多?'}, {'file': '谜语问答游戏.docx'}]}]
for rsp in bot.run(messages):
print(rsp)

输出:

2024-07-02 09:16:37,530 - split_query.py - 82 - info - extracted info from query: {"information": ["属于你的,但其他人比你使用它更多
2024-07-02 09:16:38,446 - simple_doc_parser.py - 324 - info - read parsed 谜语问答游戏.docx from cache.
2024-07-02 09:16:38,447 - doc_parser.py - 114 - info - start chunking 谜语问答游戏.docx (谜语问答游戏.docx)...
2024-07-02 09:16:38,448 - doc_parser.py - 132 - info - finished chunking 谜语问答游戏.docx (谜语问答游戏.docx). time spent: 5.7220458984375e-05 seconds.
2024-07-02 09:16:38,449 - base_search.py - 55 - info - all tokens: 311
2024-07-02 09:16:38,449 - base_search.py - 58 - info - use full ref
[{'role': 'assistant', 'content': '这个问题', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的文件', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的文件、', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的文件、记录', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的文件、记录中', 'name': 'assistant'}]
[{'role': 'assistant', 'content': '这个问题的答案是:“你的名字。”因为你的名字是属于你的,但其他人可以更多地使用它,比如在各种社交场合、日常交流中,以及其他人的文件、记录中。', 'name': 'assistant'}]

本地知识库文档:谜语问答游戏.docx

结语

本文的探索之旅让我们深入了解了 qwen-agent 的 rag(retrieval-augmented generation)能力,这是一种结合了检索和生成的先进 ai 技术。通过实践案例,我们展示了如何利用 qwen-agent 构建一个能够理解和回应复杂查询的智能助手,这不仅增强了 ai 的交互性,也极大地提升了用户体验。

rag 智能助手通过访问和分析外部文档,为用户的问题提供了精准的答案。这项技术的应用前景广阔,无论是在企业知识管理、客户服务还是教育领域,都能发挥重要作用。随着技术的不断进步和优化,我们有理由相信 rag 智能助手将在 ai 领域扮演越来越重要的角色。

项目地址

qwen-agent github

在这里插入图片描述
🎯🔖更多专栏系列文章:ai大模型提示工程完全指南ai大模型探索之路(零基础入门)ai大模型预训练微调进阶ai大模型开源精选实践ai大模型rag应用探索实践🔥🔥🔥 其他专栏可以查看📑

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com