LLM RAG with Agent

news2024/11/23 12:46:35

题意:基于代理的LLM检索增强生成

问题背景:

I was trying the application code in the link.

我正在尝试链接中的应用程序代码。

I am using the following Llang Chain version

我正在使用以下Llang Chain版本

langchain 0.0.327 langchain-community 0.0.2 langchain-core 0.1.0

Getting the following error:        得到以下的错误

Entering new AgentExecutor chain...

Traceback (most recent call last):
  File "RAGWithAgent.py", line 54, in <module>
    result = agent_executor({"input": "hi, im bob"})
  File "\lib\site-packages\langchain\chains\base.py", line 310, in __call__
    raise e
  File "\lib\site-packages\langchain\chains\base.py", line 304, in __call__
    self._call(inputs, run_manager=run_manager)
  File "\lib\site-packages\langchain\agents\agent.py", line 1146, in _call
    next_step_output = self._take_next_step(
  File "\lib\site-packages\langchain\agents\agent.py", line 933, in _take_next_step
    output = self.agent.plan(
  File "\lib\site-packages\langchain\agents\openai_functions_agent\base.py", line 104, in plan
    predicted_message = self.llm.predict_messages(
  File "\lib\site-packages\langchain\chat_models\base.py", line 650, in predict_messages
    return self(messages, stop=_stop, **kwargs)
  File "\lib\site-packages\langchain\chat_models\base.py", line 600, in __call__
    generation = self.generate(
  File "\lib\site-packages\langchain\chat_models\base.py", line 349, in generate
    raise e
  File "\lib\site-packages\langchain\chat_models\base.py", line 339, in generate
    self._generate_with_cache(
  File "\lib\site-packages\langchain\chat_models\base.py", line 492, in _generate_with_cache
    return self._generate(
  File "\lib\site-packages\langchain\chat_models\openai.py", line 357, in _generate
    return _generate_from_stream(stream_iter)
  File "\lib\site-packages\langchain\chat_models\base.py", line 57, in _generate_from_stream
    for chunk in stream:
  File "\lib\site-packages\langchain\chat_models\openai.py", line 326, in _stream
    for chunk in self.completion_with_retry(
  File "\lib\site-packages\langchain\chat_models\openai.py", line 299, in completion_with_retry
    return _completion_with_retry(**kwargs)
  File "\lib\site-packages\tenacity\__init__.py", line 289, in wrapped_f
    return self(f, *args, **kw)
  File "\lib\site-packages\tenacity\__init__.py", line 379, in __call__
    do = self.iter(retry_state=retry_state)
  File "\lib\site-packages\tenacity\__init__.py", line 314, in iter
    return fut.result()
  File "D:\Program Files\Python38\lib\concurrent\futures\_base.py", line 432, in result
    return self.__get_result()
  File "D:\Program Files\Python38\lib\concurrent\futures\_base.py", line 388, in __get_result
    raise self._exception
  File "\lib\site-packages\tenacity\__init__.py", line 382, in __call__
    result = fn(*args, **kwargs)
  File "\lib\site-packages\langchain\chat_models\openai.py", line 297, in _completion_with_retry
    return self.client.create(**kwargs)
  File "\lib\site-packages\openai\api_resources\chat_completion.py", line 25, in create
    return super().create(*args, **kwargs)
  File "\lib\site-packages\openai\api_resources\abstract\engine_api_resource.py", line 155, in create
    response, _, api_key = requestor.request(
  File "\lib\site-packages\openai\api_requestor.py", line 299, in request
    resp, got_stream = self._interpret_response(result, stream)
  File "\lib\site-packages\openai\api_requestor.py", line 710, in _interpret_response
    self._interpret_response_line(
  File "\lib\site-packages\openai\api_requestor.py", line 775, in _interpret_response_line
    raise self.handle_error_response(
openai.error.InvalidRequestError: Unrecognized request argument supplied: functions

Process finished with exit code 1

I used Azure LLM instead openAI. FAISS was not working for me so used Chroma Vector Store.

我使用了Azure的LLM,而不是OpenAI。FAISS对我不起作用,所以我使用了Chroma Vector Store。

Following is my code:        下面是我的代码

from langchain.text_splitter import CharacterTextSplitter

from langchain.document_loaders import TextLoader
from langchain.agents.agent_toolkits import create_retriever_tool
from langchain.agents.agent_toolkits import create_conversational_retrieval_agent

from langchain.chat_models import AzureChatOpenAI
from langchain.vectorstores import Chroma
from langchain.embeddings.sentence_transformer import SentenceTransformerEmbeddings

import os

AZURE_OPENAI_API_KEY = ""
os.environ["OPENAI_API_KEY"] = AZURE_OPENAI_API_KEY

loader = TextLoader(r"Toward a Knowledge Graph of Cybersecurity Countermeasures.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
chunks = text_splitter.split_documents(documents)


# create the open-source embedding function
embedding_function = SentenceTransformerEmbeddings(model_name="all-mpnet-base-v2")

current_directory = os.path.dirname("__file__")

# load it into Chroma and save it to disk
db = Chroma.from_documents(chunks, embedding_function, collection_name="groups_collection",
                           persist_directory=r"\rag_with_agent_chroma_db")

retriever = db.as_retriever(search_kwargs={"k": 5})

tool = create_retriever_tool(
    retriever,
    "search_state_of_union",
"Searches and returns documents regarding the state-of-the-union.",
)
tools = [tool]

llm = AzureChatOpenAI(
    deployment_name='gtp35turbo',
    model_name='gpt-35-turbo',
    openai_api_key=AZURE_OPENAI_API_KEY,
    openai_api_version='2023-03-15-preview',
    openai_api_base='https://azureft.openai.azure.com/',
    openai_api_type='azure',
    streaming=True,
    verbose=True
)

agent_executor = create_conversational_retrieval_agent(llm, tools, verbose=True, remember_intermediate_steps=True,
                                                       memory_key="chat_history")

result = agent_executor({"input": "hi, im bob"})

print(result["output"])

问题解决:

I tried multiple including the answers mentioned above. But did not work. I even tried to degrade, and upgrade llm version.

我尝试了包括上面提到的多种方法,但都没有成功。我甚至尝试降级和升级LLM(大型语言模型)的版本。

Finally, the following code to initialize the agent worked for me with the current version of llm

最后,以下代码使用当前版本的LLM(大型语言模型)来初始化代理对我起作用了。

conversational_agent = initialize_agent(
        agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, 
        tools=tools,
        llm=llm,
        max_iterations=10,
        handle_parsing_errors=True,
        early_stopping_method="generate",
        memory=memory, 
        verbose=True,
        
    )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE学习笔记--UE项目,IDE提示项目被卸载的解决方案

前言 我用的 IDE 是 Rider。 我不小心把 Intertmediate 文件夹给删掉了。 然后进入 Rider&#xff0c;报了一些错&#xff0c;然后编译也有问题。启动不了 UE。 解决办法 右键你的 uproject&#xff0c;点击 Generate visual studio project files。 让它重新生成对应的文件…

Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?

1 引言 电脑配置 Windows 11 cuda 12.0 RTX4090 由于tensorflow2官网已经不支持cuda11以上的版本了&#xff0c;配置cuda和tensorflow可以通过以下步骤配置实现。 2 步骤 &#xff08;1&#xff09;创建conda环境并安装cuda和cudnn&#xff0c;以及安装tensorflow2.10 con…

ManageEngine连续荣登Gartner 2024年安全信息和事件管理魔力象限

我们很高兴地宣布&#xff0c;ManageEngine再次在Gartner的安全信息和事件管理&#xff08;SIEM&#xff09;魔力象限中榜上有名&#xff0c;这是我们连续第七年获得这一认可。 Gartner ManageEngine Log360是一款全面的SIEM解决方案&#xff0c;旨在帮助组织有效处理日志数据…

电机驱动知识点总结

文章目录 一、直流电机入门基础知识1.直流电机原理2.减速器3.电机实物接线图解 二、TB6612 模块介绍1.D103A 模块说明2.D153B 模块说明3.D24A 模块说明 三、原理图说明1.TB6612 芯片原理图介绍与控制说明2.D103A 模块原理图介绍3.D153B 原理图介 四、电机驱动问题排查和测试方法…

如何加密电脑文件夹?安全可靠的文件夹加密工具分享

如何加密电脑文件夹呢&#xff1f;很多办公的小伙伴都有这样的疑问。想要保护自己的电脑文件夹数据的安全&#xff0c;但又不知道如何下手。这时候就需要借助电脑文件加密工具进行文件安全防护了。 本文将详细讲解电脑文件夹加密的方法&#xff0c;推荐几款款安全可靠的文件夹加…

001 ElasticSearch7.x 、IK分词器、Kibana 环境搭建、安装

ElasticSearch 7.x 文章目录 ElasticSearch 7.x1.windows环境安装1.ik分词器安装2.es启动3.Kibana启动 2.Linux环境安装3.分词器1.分词测试2.ES中默认分词器3.IK分词器4.自定义分词器 1.windows环境安装 es下载地址&#xff1a; https://www.elastic.co/cn/downloads/past-rel…

云通SIPX,您的码号资源智能调度专家!

在数字化转型的浪潮中&#xff0c;号码资源作为企业与客户沟通的重要桥梁&#xff0c;其管理效率直接关系到企业运营的成败。随着运营商对号码资源管理的规范化和精细化&#xff0c;企业对高效、智能的号码资源管理需求日益增长&#xff0c;以实现对外呼叫的降本增效。 一、什么…

SyntaxError: Unexpected token ‘??=‘

前端运行报错&#xff1a; globalThis.GLOBAL_NX_VERSION ?? GLOBAL_NX_VERSION;^^^SyntaxError: Unexpected token ??解决&#xff1a; 检查node版本 node -v当前使用的是14.21.3的版本&#xff0c;切换到一个16.0.0以上的版本即可&#xff0c;推荐使用nvm管理node版本 …

前端性能优化-实测

PageSpeed Insights 性能测试 今天测试网站性能的时候发现一个问题&#xff0c;一个h2标签内容为什么会占据这么长的渲染时间&#xff0c;甚至有阶段测到占据了7000多毫秒&#xff0c;使用了很多方法都不能解决&#xff0c;包括了修改标签&#xff0c;样式大小等&#xff0c;当…

使用Retrofit2+OkHttp监听上传或者下载进度会执行两次的问题

使用Retrofit2OkHttp监听上传或者下载进度RequestBody#writeTo/ResponseBody#source 会执行两次的问题 example&#xff1a; 问题原因&#xff1a; 使用了HttpLoggingInterceptor拦截器&#xff0c;并且日志等级为HttpLoggingInterceptor.Level.BODY 问题解决&#xff1a;

一分钟学习数据安全—自主管理身份SSI分布式标识DID介绍

SSI标准化的两大支柱&#xff0c;一个是VC&#xff0c;之前简单介绍过&#xff0c;另一个就是DID。基本层次上&#xff0c;DID就是一种新型的全局唯一标识符&#xff0c;跟浏览器的URL没有什么不同。深层次上&#xff0c;DID是互联网分布式数字身份和PKI新层级的原子构件。 一…

海外仓货物何如高效入库:入库区域规划策略,附规划图

作为海外仓布局的一部分&#xff0c;入库区可以说是所有业务流程的开端&#xff0c;也是最重要的区域之一。如果海外仓的入库区布局不合理&#xff0c;会直接导致后续所有的作业流程都出现拥堵、低效。 今天我们就会给大家分享海外仓入库区的规划指南&#xff0c;通过科学的规…

SQL Server2014 公司速通版

1、SQL Server 了解 SQL Server 2014是Microsoft公司推出的一款关系型数据库管理系统&#xff0c;它在数据库领域具有广泛的影响力和应用。 1.1 SQL Server 2014 主要特性【简单了解就行】 SQL Server 2014 引入了一系列新特性和改进&#xff0c;这些特性和改进旨在提高性能、增…

深入剖析Tomcat(十三) Host、Engine 容器

前面很多篇文章都在介绍Context与Wrapper两个容器&#xff0c;因为这两个容器确实也比较重要&#xff0c;与我们日常开发也息息相关&#xff0c;但是Catalina是存在四个容器的&#xff0c;这一章就来简单看看Host与Engine这两个容器。 再次展示下Catalina的容器结构&#xff0…

unittest接口测试框架设计

1、测试框架的价值 1、实现对所有测试脚本、测试数据文件以及测试报告文件的管理,提升接口测试执行和回归的效率。 2、降低人工的工作成本&#xff0c;可以在下班之后通过框架来自动运行&#xff0c;提高单位人工的产能。 3、框架可以应对多种不同的接口测试工作的需求&…

今天不看明天付费------中国AGI(人工智能)的发展趋势

深入解析了中国AGI&#xff08;人工智能&#xff09;的发展趋势&#xff0c;并清晰地展示了其市场分层结构。 ** 从下至上&#xff0c;AGI市场被划分为四个主要层级&#xff1a;基础设施层、模型层、中间层和应用层。 基础设施层作为最底层&#xff0c;为AGI的发展提供了坚实…

Gartner发布2024年企业高管增长议程:使网络安全投资与业务增长保持一致

网络安全投资和准备被视为推动企业发展的关键因素。除了避免损失之外&#xff0c;高管还应利用有效的以业务为中心的安全方法&#xff0c;通过大规模实现敏捷性和创新来推动收入增长。 主要发现 高增长公司通过扩大商业足迹来推动业绩&#xff0c;这需要大规模的创新、敏捷性和…

【论文解读】通过多标记预测建立更好更快的大型语言模型

Meta 的这篇多标记预测论文显示,与当前的下一标记预测器相比,多头预测器内存效率高、性能更好、训练速度更快。 https://arxiv.org/pdf/2404.19737 主要收获: 多标记预测是对 LLM 训练的一种简单而强大的修改,可提高样本效率和各种任务的性能。这种方法在大规模应用中尤为…

Linux编程---给函数取别名

0 Preface/Foreword 1 代码 1.1 源代码 #include <stdio.h> #include <string.h> int sum(int a, int b);int sum_alias(int a, int b) __attribute__ ((alias("sum"))); int main() { int ret 0; ret sum(5, 5) sum_alias(5, 5); …

学习笔记——动态路由——RIP(RIP路由汇总介绍)

四、RIP路由汇总介绍 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。 路由汇总的原理是&#xff0c;同一个自然网段内的不同子网的路由在向外…