LangChain Demo | 如何调用stackoverflow并结合ReAct回答代码相关问题

这篇具有很好参考价值的文章主要介绍了LangChain Demo | 如何调用stackoverflow并结合ReAct回答代码相关问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain Demo | 如何调用stackoverflow并结合ReAct回答代码相关问题,LangChain,langchain,AI Agent,stackoverflow

背景

楼主决定提升与LLM交互的质量,之前是直接prompt->answer的范式,现在我希望能用上ReAct策略和能够检索StackOverflow,让同一款LLM发挥出更大的作用。

难点

1. 怎样调用StackOverflow

step1 pip install stackspi

step 2

from langchain.agents import load_tools

tools = load_tools(
    ["stackexchange"],
    llm=llm
)

注:stackoverflow是stackexchange的子网站 

2. 交互次数太多token输入超出了llm限制

approach 1 使用ConversationSummaryBufferMemory

这种记忆方式会把之前的对话内容总结一下,限制在设定的token个数内

from langchain.memory import ConversationSummaryBufferMemory

memory = ConversationSummaryBufferMemory(
    llm = llm, # 这里的llm的作用是总结
    max_token_limit=4097,
    memory_key="chat_history"
)

approach 2 设置参数max_iterations

agent = ZeroShotAgent(
    llm_chain=llm_chain, 
    tools=tools, 
    max_iterations=4, # 限制最大交互次数,防止token超过上限
    verbose=True
)

3. llm总是回复无法回答

很多教程把温度设置成0,说是为了得到最准确的答案,但是我发现这样设置,agent会变得特别谨慎,直接说它不知道,温度调高以后问题解决了。

测试问题

What parts does a JUnit4 unit test case consist of?

代码

from constants import PROXY_URL,KEY

import warnings
warnings.filterwarnings("ignore")

import langchain
langchain.debug = True

from langchain.agents import load_tools
from langchain.chat_models import ChatOpenAI

from langchain.agents import AgentExecutor, ZeroShotAgent
from langchain.chains import LLMChain
from langchain.memory import ConversationSummaryBufferMemory

llm = ChatOpenAI(
    temperature=0.7, # 如果参数调得很低,会导致LLM特别谨慎,最后不给答案
    model_name="gpt-3.5-turbo-0613", 
    openai_api_key=KEY,
    openai_api_base=PROXY_URL
)

memory = ConversationSummaryBufferMemory(
    llm = llm, # 这里的llm的作用是总结
    max_token_limit=4097,
    memory_key="chat_history"
)

prefix = """You should be a proficient and helpful assistant in java unit testing with JUnit4 framework. You have access to the following tools:"""
suffix = """Begin!"

{chat_history}
Question: {input}
{agent_scratchpad}"""

tools = load_tools(
    ["stackexchange"],
    llm=llm
)

prompt = ZeroShotAgent.create_prompt(
    tools,
    prefix=prefix,
    suffix=suffix,
    input_variables=["input", "chat_history", "agent_scratchpad"],
) # 这里集成了ReAct

llm_chain = LLMChain(llm=llm, prompt=prompt)

agent = ZeroShotAgent(
    llm_chain=llm_chain, 
    tools=tools, 
    max_iterations=4, # 限制最大交互次数,防止token超过上限
    verbose=True
)

agent_chain = AgentExecutor.from_agent_and_tools(
    agent=agent, 
    tools=tools, 
    verbose=True, 
    memory=memory
)

def ask_agent(question):
    answer = agent_chain.run(input=question)
    return answer

def main():
    test_question = "What parts does a JUnit4 unit test case consist of?"
    test_answer = ask_agent(test_question)
    return test_answer

if __name__ == "__main__":
    main()

最后输出

[chain/end] [1:chain:AgentExecutor] [75.12s] Exiting Chain run with output:
{
  "output": "A JUnit4 unit test case consists of the following parts:\n1. 
Test class: This is a class that contains the test methods.\n2. Test methods: These are the methods that contain the actual test code. They are annotated with the @Test annotation.\n3. Assertions: These are used to verify 
the expected behavior of the code being tested. JUnit provides various assertion methods for this purpose.\n4. Annotations: JUnit provides several annotations that can be used to configure the test case, such as @Before, @After, @BeforeClass, and @AfterClass.\n\nOverall, a JUnit4 unit test case 
is a class that contains test methods with assertions, and can be configured using annotations."
}文章来源地址https://www.toymoban.com/news/detail-845595.html

到了这里,关于LangChain Demo | 如何调用stackoverflow并结合ReAct回答代码相关问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React超级简单易懂全面的有关问题回答(面试)

    目录 React事件机制: 2、React的事件和普通的HTML有什么不同: - 事件命名的规则不同,原生事件采用全小写,react事件采用小驼峰 3、React组件中怎么做事件代理?他的原理是什么? 4、React高阶组件、Render props、Hook有什么区别,为什么要不断迭代? ✨HOC(高阶组件): ✨Render

    2024年02月02日
    浏览(33)
  • React、Vue3中父组件如何调用子组件内部的方法

    当父组件需要调用子组件的方法时,可以通过useImperativeHandle钩子函数实现。以下例子是ts实现方式。 在子组件中使用 useImperativeHandle 钩子,将指定的方法暴露给父组件,以便父组件可以通过子组件的引用来调用该方法。 在子组件中使用了 useImperativeHandle 钩子将 someMethod 方法

    2024年02月16日
    浏览(22)
  • 【记录】LangChain|Ollama结合LangChain使用的速通版(包含代码以及切换各种模型的方式)

    官方教程非常长,我看了很认可,但是看完了之后呢就需要一些整理得当的笔记让我自己能更快地找到需求。所以有了这篇文章。【写给自己看的,里面半句废话的解释都没有,如果看不懂的话直接看官方教程再看我的】 我是不打算一开始就用OpenAI的,打算先用一下开源模型

    2024年04月14日
    浏览(27)
  • FastApi-1-结合sql 增/查demo

    fastapi已经学习有一段时间,今天抽时间简单整理下。 官网介绍: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)最快的 Python web 框架之一。 高效

    2024年02月12日
    浏览(29)
  • React 第一个Demo

    CTF 加解密合集 CTF Web合集 网络安全知识库 次笔记仅记录学习React过程中的笔记,因为有必要掌握一门前端的框架, 在vue和React中选择了React。 目标: 实现Demo: react.development.js 是react核心库 react-dom.development.js 是跨站库 babel.min.js 是转换库,主要作用是为了将jsx转为js 相对于正

    2024年02月09日
    浏览(25)
  • java 线程中止结合续期思想的小demo

    2024年02月06日
    浏览(30)
  • YAPi在线接口文档简单案例(结合Vue前端Demo)

    在前后端分离开发中,我们都是基于文档进行开发,那前端人员有时候无法马上拿到后端的数据,该怎么办?我们一般采用mock模拟伪造数据直接进行测试,本篇文章主要介绍YApi在线接口文档的简单使用,并结合Vue的小demo,让你快速了解到前后端分离开发整体流程。 YApi 是高

    2024年02月07日
    浏览(38)
  • milvus安装及langchain调用

    安装docker-compose 下载文件 权限 查看版本 安装milvus 下载文件 通过docker-compose安装 查看安装是否成功 测试端口 安装可视化界面attu 拉取镜像 启动容器 其中端口和ip换成自己的就行(8920,192.168.175.4换成自己服务器的ip和自己定义的端口) 可视化界面 安装langchain 安装pymilvus 调

    2024年01月21日
    浏览(33)
  • 【LangChain】结合代理和向量存储(Combine agents and vector stores)

    本笔记本介绍了如何组合代理和向量存储。其用例是,您已将数据提取到向量存储中,并希望以 代理 方式与其进行交互。 下文讲述的方法是创建 RetrievalQA ,然后将其用作整体代理中的工具。 #请注意,在上面的示例中,代理在查询 RetrievalQAChain 后做了一些额外的工作。您可

    2024年02月13日
    浏览(31)
  • React SSG - 也写个 Demo 吧

    上次写了一个 SSR 的 DEMO ,今天写个小 Demo 来从头实现一下 react 的 SSG ,来理解下 SSG 是如何实现的。 SSG 即 Static Site Generation 静态站点生成,是指将在构建时就提前生成静态 HTML 页面,速度很快,一般用于以下场景: SEO (搜索引擎优化):由于部分搜索引擎对 CSR 内容支持不

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包