Python开发AI智能体(三)———Langchain定义提示词模板

前言

上篇文章给大家介绍AI项目检测平台LangSmish以及开源框架Langchain的使用,并且带领大家编写了一个案例。

这篇文章将介绍在Langchain框架中如何定义提示词模板


一、什么是提示词模板?

提示词模板(Prompt Template) 是大语言模型(LLM)应用开发中的核心概念,本质是 预定义的提示结构框架。它通过将 静态文本 与 动态变量 结合,实现标准化、可复用的提示生成机制。它提示词可以是一个简单的问题、一段描述、一个命令或任何形式的文本输入。其核心目的是为模型提供上下文和方向,以确保生成的内容符合用户需求。

二、ChatPromptTemplate.from_messages 方法

1.什么是ChatPromptTemplate.from_messages

LangChain框架中的ChatPromptTemplate是用来构建聊天型提示模板的类,而from_messages是它的一个类方法。ChatPromptTemplate.from_messages 是 LangChain 框架中用于构建 多角色对话模板 的核心方法。它允许你组合不同角色(如系统、用户、AI等)的消息模板,生成符合大语言模型(如 glm-4-flash)输入格式的提示。

2.核心功能

  • 多角色消息组合 - 将系统指令、用户输入、AI回复等消息按顺序组合
  • 动态变量插入 - 支持通过模板语法插入动态内容
  • 格式标准化 - 自动转换为模型需要的消息格式(如 OpenAI 的消息数组)

3.为什么要用ChatPromptTemplate.from_messages 方法

1.角色分离

明确区分系统指令(system)、用户输入(human)、AI回复(assistant)等不同角色消息,避免的混乱

prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面内容翻译成英语'), #系统角色设定
    ('human',"今天天气很好"),         #用户输入
    ("assistant", "已翻译完成:")      # 定义期望的AI回复位置
])
2.上下文序列化

天然支持对话历史管理,通过有序组合消息实现多轮对话逻辑。对话历史这个知识点我将在后续文章中做详细介绍,这里先作为了解

prompt_template = ChatPromptTemplate.from_messages([
    ('system','当前对话主题:我的姓名张三'), #系统角色设定
     MessagesPlaceholder("history"),  # 动态插入历史消息
    ('human',"我叫什么"),         #用户输入
   
])
3.模板变量系统

使用 {variable} 语法实现内容动态化,更灵活

prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面内容翻译成{language}'),
    ('human',"{text}")
])
#可以动态生成不同语言的提示模板
chain.invoke({'language':'English','text':'今天天气很好'})
4.混合静态动态内容

自由组合固定内容与可变部分,适应复杂业务需求

prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面内容翻译成英语'),
    ('human',"{text}")
])
#可以动态生成不同语言的提示模板
chain.invoke({'text':'今天天气很好'})

三、代码编写

1.调用AI检测平台和智谱AI

这一步在上一篇文章中已经做了详细了的介绍,这里就不过多进行叙述了

# 调用AI检测平台(langSmith)
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = 'XXXXXXXXX'
os.environ["LANGCHAIN_PROJECT"] = "智谱AI"

#调用智谱AI API
os.environ["ZHIPUAI_API_KEY"] = "XXXXXXXXXXX"

2.调用第三方库

#pip install langchain_community
#调用第三方库
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.output_parsers import StrOutputParser

3.创建单一链

#调用大语言模型
model = ChatZhipuAI(model_name='glm-4-flash')

# 创建返回的数据解析器
parser = StrOutputParser()

# 定义提示词模板
prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面内容翻译成{language}'),
    ('human',"{text}")
])

#得到链
chain = prompt_template | model |parser

4.调用链

language = input('请输入你要选择的语言')
text= input('请输入你要翻译的句子')
language = '"'+language+'"'
text = '"'+text+'"'
print(chain.invoke({'language':language,'text':text}))

5.完整代码

# 调用AI检测平台(langSmith)
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = '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'
os.environ["LANGCHAIN_PROJECT"] = "智谱AI"

#调用智谱AI API
os.environ["ZHIPUAI_API_KEY"] = "8a950f79c0674586b210fd9b7b9f5da0.olngH5NqnZyIj6Zo"

#安装第三方库集成
#pip install langchain_community
#调用第三方库
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.output_parsers import StrOutputParser

#调用大语言模型
model = ChatZhipuAI(model_name='glm-4-flash')

# 创建返回的数据解析器
parser = StrOutputParser()

# 定义提示词模板
prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面内容翻译成{language}'),
    ('human',"{text}")
])

#得到链
chain = prompt_template | model |parser

#调用chain
language = input('请输入你要选择的语言')
text= input('请输入你要翻译的句子')
language = '"'+language+'"'
text = '"'+text+'"'
print(chain.invoke({'language':language,'text':text}))

6.运行结果

### LangChain Agent 开发教程 #### 什么是LangChain Agent LangChain Agent是一种基于大型语言模型(LLM)构建的应用程序组件,能够执行特定的任务或一系列操作。通过集成不同的工具和服务,这些代理可以实现自动化处理复杂的工作流程[^1]。 #### 安装依赖库 为了创建并运行一个简单的LangChain Agent实例,首先需要安装必要的Python包: ```bash pip install langchain openai ``` #### 初始化配置 接下来定义一些基本设置,比如OpenAI API密钥和其他环境变量。这一步骤对于确保后续代码能顺利调用外部服务至关重要。 ```python import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 自动查找 .env 文件并加载其中的内容到环境中 openai_api_key = os.environ.get('OPENAI_API_KEY') ``` #### 构建基础Agent结构 现在有了初步准备之后就可以着手建立最简易版本的LangChain Agent框架了。这里展示了一个非常典型的例子——问答机器人。 ```python from langchain.agents import initialize_agent, Tool from langchain.llms.openai import OpenAILanguageModel llm = OpenAILanguageModel(openai_api_key=openai_api_key) tools = [ Tool( name="Search", func=... , # 这里应该填入具体的搜索功能函数 description="用于查询互联网上的信息" ), ] agent_chain = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) ``` 请注意,在上述模板中的`func=...`部分应当替换为你想要赋予此Agent的具体能力对应的函数;而参数`agent="zero-shot-react-description"`指定了所使用的策略模式,可以根据实际需求调整为其他选项如反射式描述(`reflective`)等不同类型的反应机制。 #### 执行任务 最后一步就是让这个刚搭建好的Agent去完成某些具体工作啦! ```python result = agent_chain.run(input="请问今天天气怎么样?") print(result) ``` 这段脚本会触发之前设定的那个具有搜索技能的Agent去寻找关于当天气象状况的相关资料,并返回给用户一份简洁明了的回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值