LangChain入门(十)-Prompt和Agents

该文展示了如何利用Langchain库结合OpenAIAPI和第三方服务SerpAPI来构建智能问答系统。通过PromptTemplate和LLMChain可以简化用户输入,而Agents则实现了动态代理,能自动选择合适的工具如搜索引擎或数学计算模块来处理问题。示例代码中详细演示了基础版、Prompt版本和Agents版本的问答流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、名词解释

二、实例


一、名词解释

Prompt:一个能够与关键词组成完整语义的模板,用户只需要输入关键词即可。

Agents:动态代理调用其他服务的API,比如精确计算、实际的业务数据API等。

二、实例

import os

from langchain import OpenAI, PromptTemplate, LLMChain
from langchain.agents import load_tools, initialize_agent, AgentType

# openAI的Key
os.environ["OPENAI_API_KEY"] = '**************'
# 谷歌搜索的Key
os.environ["SERPAPI_API_KEY"] = '***************'

llm = OpenAI(temperature=0)


def one():
    """
    基础版:输入整个语义
    :return:
    """
    text = "对于一家生产彩色袜子的公司来说,什么是好的公司名称?"
    result = llm(text)
    print(result)


def two():
    """
    prompt版本:提前定义好语义,输入关键词即可
    :return:
    """
    prompt = PromptTemplate(input_variables=["product"],
                            template="对于一家生产{product}的公司来说,什么是好的公司名称?")

    chain = LLMChain(llm=llm, prompt=prompt)

    # 这样我们只需要输入产品名称即可
    result = chain.run("杨梅")
    print(result)


def three():
    """
    agents版:动态代理,实现自动选择计算工具
    :return:
    """
    # SerpApi是一个付费提供搜索结果API的第三方服务提供商。它允许用户通过简单的API调用访问各种搜索引擎的搜索结果,包括Google、Bing、Yahoo、Yandex等。
    # llm-math是langchain里面的能做数学计算的模块
    tools = load_tools(["serpapi", "llm-math"], llm=llm)
    # 初始化tools,models 和使用的agent
    agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
    # 输出结果
    result = agent.run("你是人工智能吗?海湾战争距离现在多少年了? 这个数字的三次方式多少?")
    print(result)


if __name__ == '__main__':
    three()

手动初始化Tools 

import os

from langchain import OpenAI, PromptTemplate, LLMChain, SerpAPIWrapper, LLMMathChain
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain.tools import Tool

# openAI的Key
os.environ["OPENAI_API_KEY"] = '************'
# 谷歌搜索的Key
os.environ["SERPAPI_API_KEY"] = '************'

llm = OpenAI(temperature=0)


def one():
    """
    基础版:输入整个语义
    :return:
    """
    text = "对于一家生产彩色袜子的公司来说,什么是好的公司名称?"
    result = llm(text)
    print(result)


def two():
    """
    prompt版本:提前定义好语义,输入关键词即可
    :return:
    """
    prompt = PromptTemplate(input_variables=["product"],
                            template="对于一家生产{product}的公司来说,什么是好的公司名称?")

    chain = LLMChain(llm=llm, prompt=prompt)

    # 这样我们只需要输入产品名称即可
    result = chain.run("杨梅")
    print(result)


def three():
    """
    agents版:动态代理,实现自动选择计算工具
    :return:
    """
    # SerpApi是一个付费提供搜索结果API的第三方服务提供商。它允许用户通过简单的API调用访问各种搜索引擎的搜索结果,包括Google、Bing、Yahoo、Yandex等。
    # llm-math是langchain里面的能做数学计算的模块
    # tools = load_tools(["serpapi", "llm-math"], llm=llm)

    search = SerpAPIWrapper()
    llm_math_chain = LLMMathChain(llm=llm, verbose=True)

    tools = [
        Tool(
            name="Search",
            func=search.run,
            description="useful for when you need to answer questions about current events"
        ),
        Tool(
            name="Calculator",
            func=llm_math_chain.run,
            description="useful for when you need to answer questions about math"
        )
    ]

    # 初始化tools,models 和使用的agent
    agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
    # 输出结果
    result = agent.run("你是人工智能吗?海湾战争距离现在多少年了? 这个数字的三次方式多少?")
    print(result)


if __name__ == '__main__':
    three()

结尾、扫一扫下方微信名片即可+博主徽信哦 ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓  ↓↓↓

### 关于 LangChain入门教程 #### 了解 LangChain 基本概念核心功能 LangChain 是一种用于构建语言模型应用的强大框架,旨在简化开发者创建复杂自然语言处理系统的流程。该框架不仅提供了多种预训练的大规模语言模型(LLMs),还支持定制化的提示模板(Prompt Templates)、代理(Agents)、记忆(Memory)、索引(Indexes)以及链条(Chains)。这些特性使得开发人员能够更灵活地设计对话系统其他基于文本的应用程序[^1]。 #### 组件详解 - **Models**: 支持不同种类的语言模型,如 ChatGPT、ChatGLM T5 等。 - **Prompts**: 提供管理自定义提示的功能,有助于优化与 LLMs 的交互效果。 - **Agents**: 负责决策并执行特定任务,允许大型语言模型访问外部工具服务。 - **Memory**: 记录会话历史记录,保持上下文连贯性。 - **Indexes**: 对文档进行结构化处理,便于后续查询操作。 - **Chains**: 定义了一系列组件之间的调用顺序,形成完整的业务逻辑流[^4]。 #### 实际应用场景展示——简单问答系统 为了更好地理解如何利用 LangChain 创建实际项目,在此提供了一个简易版的问答系统实例: ```python from langchain import LangChain, PromptTemplate, LLMMemory, SimpleIndexCreator, AgentExecutor import json # 加载配置文件中的参数设置 with open('config.json', 'r') as f: config = json.load(f) # 初始化内存对象来存储聊天记录 memory = LLMMemory() # 设置索引来加速检索过程 index_creator = SimpleIndexCreator() indexes = index_creator.create_indexes(config['documents']) # 配置提示模板以指导模型生成合适的回复 prompt_template = PromptTemplate( input_variables=["history", "input"], template="Based on the following conversation history:\n{history}\nThe user asks: {input}" ) # 构造Agent执行器来进行具体的操作 agent_executor = AgentExecutor.from_llm_and_tools(llm=config['llm'], tools=[...], memory=memory) while True: question = input("Ask a question:") # 获取当前对话的历史作为背景信息的一部分 context = agent_executor.memory.get_context(inputs={"question": question}) # 将问题传递给Agent执行器获取答案 response = agent_executor.run(prompt=prompt_template.format(history=context["history"], input=question)) print(response) ``` 这段代码片段展示了如何结合多个 LangChain 组件建立一个可以持续互动的基础架构,并通过循环读取用户的输入来维持整个交流的过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值