- 如果我们想要对话和我们可以从模型中期望的响应类型有更多的控制怎么办?
- 这个就是提示模板的用武之地
- 安装:
npm install @langchain/core - 根目录创建
prompt-templates.js
ChatPromptTemplate.fromTemplate简单的模板
js
import {
// PromptTemplate,
ChatPromptTemplate,
} from "@langchain/core/prompts"; // 导入你需要的模块
import { ChatOpenAI } from "@langchain/openai";
import * as dotenv from "dotenv";
dotenv.config();
const model = new ChatOpenAI({
// 指定 DeepSeek 的模型名称,例如 deepseek-chat
model: process.env.AI_MODEL,
// 配置 DeepSeek 的 API Key
apiKey: process.env.DEEPSEEK_API_KEY,
// 配置 DeepSeek 的 Base URL
configuration: {
baseURL: process.env.BASE_URL,
},
temperature: 0.7, // 模型温度的范围是0到1,0表示严格和事实,1表示完全创意(就是瞎吉儿编)
maxTokens: 1024, // 最大输出token数
verbose: true, // 允许我们调试模型
});
// 创建模板方式一:使用 PromptTemplate
const prompt = ChatPromptTemplate.fromTemplate(
"你是一个段子手,说一个冷笑话 {input}",
);
console.log(await prompt.format({ input: "摔跤" })); // 这里的input 对应上面的 {input}
-
效果如下:

-
创建链
js
import {
// PromptTemplate,
ChatPromptTemplate,
} from "@langchain/core/prompts"; // 导入你需要的模块
import { ChatOpenAI } from "@langchain/openai";
import * as dotenv from "dotenv";
dotenv.config();
const model = new ChatOpenAI({
// 指定 DeepSeek 的模型名称,例如 deepseek-chat
model: process.env.AI_MODEL,
// 配置 DeepSeek 的 API Key
apiKey: process.env.DEEPSEEK_API_KEY,
// 配置 DeepSeek 的 Base URL
configuration: {
baseURL: process.env.BASE_URL,
},
temperature: 0.7, // 模型温度的范围是0到1,0表示严格和事实,1表示完全创意(就是瞎吉儿编)
maxTokens: 1024, // 最大输出token数
verbose: true, // 允许我们调试模型
});
// 创建模板方式一:使用 PromptTemplate
const prompt = ChatPromptTemplate.fromTemplate(
"你是一个段子手,说一个冷笑话 {input}",
);
// console.log(await prompt.format({ input: "摔跤" }));
// 这里的input 对应上面的 {input},输出结果为:你是一个段子手,说一个冷笑话 摔跤
// 创建链
const chain = prompt.pipe(model); // 这样我们就可以使用链来调用模型了
// 调用链
const response = chain.invoke({
input: "摔跤",
});
console.log(response);

ChatPromptTemplate.fromMessage接收一个数组
- 需要指定角色
- 这只是更动态和更简洁的方式创建提示的另一种选择
js
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
import * as dotenv from "dotenv";
// 加载环境变量
dotenv.config();
// 初始化模型
const model = new ChatOpenAI({
model: process.env.AI_MODEL || "deepseek-chat", // 增加默认值防止未定义
apiKey: process.env.DEEPSEEK_API_KEY,
configuration: {
baseURL: process.env.BASE_URL,
},
temperature: 0.7,
maxTokens: 1024,
verbose: true,
});
async function run() {
try {
// 格式必须是: ["角色类型", "模板内容"]
// 常用角色: "system" (系统设定), "user" (用户), "human" (同user)
const prompt = ChatPromptTemplate.fromMessages([
// 第一条消息:设定系统角色
["system", "你是一个数学天才,也是一个幽默的段子手。"],
// 第二条消息:用户的输入
["user", "1 + 1 等于多少?另外,说一个关于 {input} 的笑话。"],
]);
// 创建链:将提示词模板连接到模型
const chain = prompt.pipe(model);
// 调用链并等待结果 (必须使用 await)
const response = await chain.invoke({
input: "摔跤",
});
// 打印最终结果
console.log("--- 最终回复 ---");
console.log(response.content);
} catch (error) {
console.error("运行出错:", error);
}
}
// 执行主函数
run();


后面学习-使用输出解析器(OutputParsers)来控制大模型的输出格式