用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/evanfang0054/cc-system-creator-scripts --skill langchain-chat-models命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | langchain-chat-models |
| description | 使用 LangChain 中的聊天模型集成指南,包括 OpenAI、Anthropic、Google、Azure 和 Bedrock |
| language | js |
LangChain 中的聊天模型为与各种 LLM 提供商交互提供了统一接口。它们接受消息序列作为输入,并返回 AI 生成的消息作为输出。聊天模型支持工具调用、结构化输出和流式传输等功能。
| 提供商 | 最适合 | 模型示例 | 包 | 主要特性 |
|---|---|---|---|---|
| OpenAI | 通用、函数调用 | gpt-4、gpt-4-turbo、gpt-3.5-turbo | @langchain/openai | 强大的函数调用、视觉、快速 |
| Anthropic | 长上下文、安全性、分析 | claude-3-opus、claude-3-sonnet、claude-3-haiku | @langchain/anthropic | 200k 上下文、工具使用、提示缓存 |
| Google GenAI | 多模态、免费层 | gemini-pro、gemini-pro-vision | @langchain/google-genai | 视觉、提供免费层 |
| Azure OpenAI | 企业、合规性 | gpt-4、gpt-35-turbo(Azure 部署) | @langchain/openai | 企业 SLA、数据驻留 |
| AWS Bedrock | AWS 生态系统、多样性 | claude、llama、titan 模型 | @langchain/aws | 多个模型、AWS 集成 |
| Google Vertex AI | GCP 生态系统、企业 | gemini-pro、palm 模型 | @langchain/google-vertexai | 企业功能、GCP 集成 |
选择 OpenAI 如果:
选择 Anthropic 如果:
选择 Azure OpenAI 如果:
选择 AWS Bedrock 如果:
选择 Google(GenAI 或 Vertex)如果:
import { ChatOpenAI } from "@langchain/openai";
// 基本初始化
const model = new ChatOpenAI({
modelName: "gpt-4",
temperature: 0.7,
openAIApiKey: process.env.OPENAI_API_KEY, // 如果在 env 中设置则可选
});
// 调用模型
const response = await model.invoke([
{ role: "system", content: "你是一个有用的助手。" },
{ role: "user", content: "什么是 LangChain?" }
]);
console.log(response.content);
// 流式响应
const stream = await model.stream("给我讲个故事");
for await (const chunk of stream) {
process.stdout.write(chunk.content);
}
import { ChatAnthropic } from "@langchain/anthropic";
const model = new ChatAnthropic({
modelName: "claude-3-opus-20240229",
temperature: 0.7,
anthropicApiKey: process.env.ANTHROPIC_API_KEY,
maxTokens: 1024,
});
// 长上下文使用
const response = await model.invoke([
{ role: "user", content: "分析这个长文档..." }
]);
// 使用工具
const modelWithTools = model.bindTools([
{
name: "get_weather",
description: "获取位置的天气",
input_schema: {
type: "object",
properties: {
location: { type: "string" }
},
required: ["location"]
}
}
]);
import { AzureChatOpenAI } from "@langchain/openai";
const model = new AzureChatOpenAI({
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME,
azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME,
azureOpenAIApiVersion: "2024-02-01",
temperature: 0.7,
});
const response = await model.invoke("你好,你好吗?");
import { ChatBedrockConverse } from "@langchain/aws";
const model = new ChatBedrockConverse({
model: "anthropic.claude-3-sonnet-20240229-v1:0",
region: "us-east-1",
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
});
const response = await model.invoke("什么是 AWS Bedrock?");
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
const model = new ChatGoogleGenerativeAI({
modelName: "gemini-pro",
apiKey: process.env.GOOGLE_API_KEY,
temperature: 0.7,
});
const response = await model.invoke("解释量子计算");
import { initChatModel } from "langchain/chat_models/universal";
// 根据环境自动选择模型
const model = await initChatModel("gpt-4", {
modelProvider: "openai",
temperature: 0.7,
});
// 或使用 Bedrock
const bedrockModel = await initChatModel(
"anthropic.claude-3-sonnet-20240229-v1:0",
{ modelProvider: "bedrock" }
);
import { ChatOpenAI } from "@langchain/openai";
import { z } from "zod";
import { tool } from "@langchain/core/tools";
// 定义工具
const weatherTool = tool(
async ({ location }) => {
return `${location}的天气:晴朗,72°F`;
},
{
name: "get_weather",
description: "获取位置的当前天气",
schema: z.object({
location: z.string().describe("城市名称"),
}),
}
);
// 将工具绑定到模型
const model = new ChatOpenAI({
modelName: "gpt-4",
}).bindTools([weatherTool]);
const response = await model.invoke("旧金山的天气怎么样?");
console.log(response.tool_calls); // 模型将建议调用天气工具
✅ 初始化任何支持的聊天模型提供商
@langchain/openai、@langchain/anthropic 等)✅ 配置模型参数
✅ 使用模型进行文本生成
✅ 实现工具/函数调用
✅ 在提供商之间切换
❌ 创建新的模型提供商
❌ 绕过提供商要求
❌ 修改模型能力
❌ 在没有正确设置的情况下访问模型
// ❌ 错误:硬编码 API 密钥
const model = new ChatOpenAI({
openAIApiKey: "sk-..." // 永远不要提交这个!
});
// ✅ 正确:使用环境变量
const model = new ChatOpenAI({
openAIApiKey: process.env.OPENAI_API_KEY
});
修复:始终使用环境变量或安全密钥管理系统。
// ❌ 不完整:缺少必填字段
const model = new AzureChatOpenAI({
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
});
// ✅ 完整:所有必填字段
const model = new AzureChatOpenAI({
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
azureOpenAIApiInstanceName: "my-instance",
azureOpenAIApiDeploymentName: "gpt-4-deployment",
azureOpenAIApiVersion: "2024-02-01",
});
修复:Azure 需要实例名称、部署名称和 API 版本。
// 不同提供商有不同的模型命名约定
// OpenAI
const openai = new ChatOpenAI({ modelName: "gpt-4" });
// Bedrock(包括提供商前缀)
const bedrock = new ChatBedrockConverse({
model: "anthropic.claude-3-sonnet-20240229-v1:0"
});
// Anthropic(直接模型名称)
const anthropic = new ChatAnthropic({
modelName: "claude-3-opus-20240229"
});
修复:查看提供商文档以获取正确的模型标识符。
// ❌ 并非所有模型都支持工具调用
const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo-instruct" });
// 这个旧模型不支持工具!
// ✅ 使用支持工具的模型
const model = new ChatOpenAI({ modelName: "gpt-4" });
const withTools = model.bindTools([myTool]);
修复:在绑定工具之前验证模型是否支持函数/工具调用。GPT-4、GPT-3.5-turbo、Claude 3 和 Gemini Pro 都支持工具。
// ❌ 没有重试逻辑
const model = new ChatOpenAI();
const response = await model.invoke("你好"); // 可能因速率限制而失败
// ✅ 配置重试
const model = new ChatOpenAI({
maxRetries: 3,
timeout: 30000, // 30 秒
});
修复:配置重试逻辑并优雅地处理速率限制错误。
// ❌ 超过上下文限制
const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo" }); // 4k 上下文
const longText = "...".repeat(10000);
await model.invoke(longText); // 会失败!
// ✅ 为长上下文使用适当的模型
const model = new ChatOpenAI({ modelName: "gpt-4-turbo" }); // 128k 上下文
// 或
const model = new ChatAnthropic({
modelName: "claude-3-opus-20240229" // 200k 上下文
});
修复:为您的用例选择具有适当上下文窗口的模型。
// ❌ 错误地混合使用流式和非流式
const response = await model.stream("你好");
console.log(response.content); // 不起作用!response 是异步可迭代对象
// ✅ 正确处理流式传输
const stream = await model.stream("你好");
for await (const chunk of stream) {
console.log(chunk.content);
}
// 或使用 invoke 进行非流式
const response = await model.invoke("你好");
console.log(response.content);
修复:使用 invoke() 获得完整响应,使用 stream() 进行逐令牌传输。
# OpenAI
npm install @langchain/openai
# Anthropic
npm install @langchain/anthropic
# AWS (Bedrock)
npm install @langchain/aws
# Google
npm install @langchain/google-genai
npm install @langchain/google-vertexai
Mac 系统深度清理和优化工具。使用 Mole (mo 命令) 执行系统清理、磁盘分析、应用卸载、系统优化等任务。 触发场景(当用户提到以下任一内容时使用此 skill): - 清理 Mac、清理磁盘、释放空间、清理缓存、清理系统 - 卸载应用、删除应用、移除应用及其残留 - 磁盘分析、查看磁盘占用、大文件查找、空间分析 - 系统优化、系统维护、刷新系统、重建缓存 - 系统状态、系统监控、CPU/内存/磁盘监控 - 清理 node_modules、清理构建产物、清理项目依赖 - 清理安装包、删除 dmg/pkg 文件 - Mac 清理工具、类似 CleanMyMac 的功能 - "我的 Mac 太慢了"、"磁盘空间不足"、"电脑卡顿" - 即使没有明确说 "Mole",只要涉及上述场景就应使用
构建 CLI / command-line 工具时使用,支持两种模式。模式 A 人类 CLI(终端 UX、彩色、交互式提示、进度条、Shell 自动补全),关键词包括 commander / yargs / oclif / typer / click / cobra。模式 B agent-native CLI(JSON envelope / schema 自省 / dry-run 写入安全 / 契约驱动),关键词包括 agent-native CLI、JSON envelope、friction signal。混合场景默认走 B(agent 约束更严格)。只要用户提到 CLI、command-line、命令行工具、agent-native、envelope、schema、friction signal,或要给 agent 提供可调用的 CLI 工具,就应主动使用此 skill。
快速搭建和配置 pnpm monorepo 项目结构,包含 TypeScript、tsup 构建、私有 npm registry 配置。当用户需要"创建 monorepo"、"初始化 monorepo 项目"、"配置 pnpm workspace"、"设置 monorepo 构建"、"monorepo setup"时使用。特别适合需要统一管理多个包、配置构建工具、处理 TypeScript 路径问题的场景。即使用户只是说"帮我搭建项目结构"或"配置构建",如果涉及多包管理也应该使用此 skill。