Deep Read

ChatPromptTemplate

ChatPromptTemplate 创建聊天消息列表,模板带有对应角色。常用的有 AIMessagePromptTemplateSystemMessagePromptTemplateHumanMessagePromptTemplate

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate
from langchain_core.output_parsers import StrOutputParser

from models import DEEPSEEK_URL, DEEPSEEK_V4_PRO
import os

api_key = os.getenv("MY_DEEPSEEK_API_KEY")
base_url = DEEPSEEK_URL
model = DEEPSEEK_V4_PRO
llm = ChatOpenAI(api_key=api_key, base_url=base_url, model=model)


"""
# 第1种格式
template = ChatPromptTemplate.from_messages(
    [("system", "你是一名专业的翻译助手"), ("human", "讲以下{text} 翻译成英文")]
)

# 第2种格式 
template = ChatPromptTemplate.from_messages([("human", "讲以下{text} 翻译成英文")])
"""
# 第3种格式
template = ChatPromptTemplate.from_template("讲以下{text} 翻译成英文")

message = template.invoke({"text": "我是程序员"})
# 真正调用大模型,返回 AI 的回答
aimessage = llm.invoke(message)
print(aimessage.content)

以上是ChatPromptTemplate 常用的 3 种方式

from_messages 中的参数是列表, 但是列表里装的是 (角色, 内容) 的元组,[("system", "你是一名专业的程序员"), ("user", "{input}")]

每个元组就是一条消息:

  • 第一个元素:角色,固定字符串 "system" / "human" / "user" / "ai"
  • 第二个元素:消息内容,可以包含 {变量名} 占位符