2-使用LLM链和Prompt模板

  • 如果我们想要对话和我们可以从模型中期望的响应类型有更多的控制怎么办?
    • 这个就是提示模板的用武之地
  • 安装: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)来控制大模型的输出格式

相关推荐
乌恩大侠3 分钟前
从 5G 通信到厘米级感知:基于 NVIDIA Aerial、SRS 与 UL-TDOA 构建 6G 无线定位实验平台
人工智能·5g·电信大模型
云和数据.ChenGuang7 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
西西木科技丨Shopify开发机构8 小时前
CalDigit TS4案例:AI产品图的Shopify整站接入与验收
人工智能·shopify·独立站
2601_965448878 小时前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台8 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
HRaitest8 小时前
秋招技术岗招聘提效:三类 AI 招聘方案的技术底层与选型逻辑
大数据·人工智能·求职招聘·ai-native
天远数科8 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
车软学堂8 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
海盗12349 小时前
AI 新闻日报 10-28:Atria Dawn 完整版开源、Cursor Agent SDK 转正、Genie 4 实时世界模型
人工智能·机器人·开源·人工智能aigc
志尊宝9 小时前
AI原生前端开发(035):AI时代的工程化最佳实践总结
人工智能·ai-native