langchain 入门指南 - 使用提示词模板

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: langchain 入门指南 - 使用提示词模板

有时候,我们只是想利用 LLM 来帮助我们完成一些特定类型的任务,

但每次可能我们跟 LLM 对话的内容只是有一些细微的差别,这时候我们可以使用提示词模板来帮助我们更方便地构建对话。

PromptTemplate

langchain 中,我们可以使用 PromptTemplate 来定义一个提示词模板:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
prompt_template = "What is a good name for a company that makes {product}?"
prompt = PromptTemplate(template=prompt_template, input_variables=["product"])
llm = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0,
    max_tokens=200,
    api_key="your key",
    base_url="https://api.openai-hk.com/v1",
)
chain = prompt | llm | StrOutputParser()
response = chain.invoke({"product": "shoes"})
print(response)

输出:

SoleStride Footwear Co.

在上面这个例子中,我们的 PromptTemplateWhat is a good name for a company that makes {product}?

在这里,product 是一个变量,我们可以在调用 chain.invoke 的时候传入一个字典,来替换这个变量。

这样,我们就实现了一个模板化的提示词,可以方便地构建对话。

RunnableSerializable

在上面的例子中,chain = prompt | llm | StrOutputParser() 这一行代码我们可能会看得有点懵逼。

这里的 | 并不是常见的 or 运算,而是 prompt 里面的 __or__ 方法调用,等于是运算符重载了。

这一行代码的最终结果是,返回一个 RunnableSequence 的实例,我们可以调用它的 invoke 方法。

接着就执行类似管道的操作,前一个操作的输出作为后一个操作的输入。

管道抽象

如果熟悉 linux 命令行的话,我们会知道,其实 linux 中的管道操作符也是 |。与之类似的,langchain 重载 | 操作符也是为了抽象管道这种操作。

在这行代码中,prompt 的输出会作为 llm 的输入,同时,llm 的输出也会作为 StrOutputParser() 的输入。然后最终得到多个管道处理后的结果。

invoke 实现管道操作的源码

# invoke all steps in sequence
try:
    for i, step in enumerate(self.steps):
        # mark each step as a child run
        config = patch_config(
            config, callbacks=run_manager.get_child(f"seq:step:{i+1}")
        )
        if i == 0:
            input = step.invoke(input, config, **kwargs)
        else:
            input = step.invoke(input, config)
# finish the root run
except BaseException as e:
    run_manager.on_chain_error(e)
    raise

批量调用

我们也可以使用 chainbatch 方法来传入多个模板参数:

response = chain.batch([
    {"product": "shoes"},
    {"product": "cup"},
])

这样我们就可以同时得到多个问题的答案了。


相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
5月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
1313 2
|
7月前
langchain 入门指南 - 使用 Agent
langchain 入门指南 - 使用 Agent
224 0
|
7月前
|
安全 API 数据库
langchain 入门指南 - 函数调用
langchain 入门指南 - 函数调用
215 1
|
7月前
|
机器学习/深度学习
langchain 入门指南 - In-context Learning
langchain 入门指南 - In-context Learning
196 0
|
7月前
langchain 入门指南 - 链式请求
langchain 入门指南 - 链式请求
105 0
|
5月前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
162 1
|
7月前
|
存储 机器学习/深度学习 传感器
langchain 入门指南 - 实现一个多模态 chatbot
langchain 入门指南 - 实现一个多模态 chatbot
194 0
|
7月前
|
前端开发 人机交互
langchain 入门指南 - ReAct 模式
langchain 入门指南 - ReAct 模式
184 1
|
7月前
|
存储 人工智能 缓存
langchain 入门指南 - 让 AI 记住你说过的话
langchain 入门指南 - 让 AI 记住你说过的话
211 1
|
7月前
|
人工智能 搜索推荐 API
langchain 入门指南 - 让 AI 从互联网获取信息
langchain 入门指南 - 让 AI 从互联网获取信息
173 1

热门文章

最新文章