提示工程快速入门 (SDK)
本快速入门指南将介绍如何使用 SDK 创建、测试和迭代提示。在本教程中,我们将使用 OpenAI,但您也可以使用任何您想要的 LLM。
本教程使用提示工程 SDK,如果您有兴趣使用 UI,请阅读此指南。
1. 设置
首先,安装所需的包:
- Python
- TypeScript
pip install -qU langsmith openai langchain_core
yarn add langsmith @langchain/core langchain openai
接下来,请确保您已注册 LangSmith 账户,然后 创建 并设置您的 API 密钥。 您还需要注册一个 OpenAI API 密钥以运行本教程中的代码。
LANGSMITH_API_KEY = '<your_api_key>'
OPENAI_API_KEY = '<your_api_key>'
2. 创建提示
要在 LangSmith 中创建提示,请定义您希望在提示中包含的消息列表,然后使用 ChatPromptTemplate 函数(Python)或 TypeScript 函数将它们包装起来。 接下来,只需调用 push_prompt(Python)或 pushPrompt(TypeScript),即可将您的提示发送至 LangSmith!
- Python
- TypeScript
from langsmith import Client
from langchain_core.prompts import ChatPromptTemplate
# Connect to the LangSmith client
client = Client()
# Define the prompt
prompt = ChatPromptTemplate([
("system", "You are a helpful chatbot."),
("user", "{question}"),
])
# Push the prompt
client.push_prompt("my-prompt", object=prompt)
import { Client } from "langsmith";
import { ChatPromptTemplate } from "@langchain/core/prompts";
// Connect to the LangSmith client
const client = new Client();
// Define the prompt
const prompt = ChatPromptTemplate.fromMessages([
["system", "You are a helpful chatbot."],
["user", "{question}"]
]);
// Push the prompt
await client.pushPrompt("my-prompt", {
object: prompt
});
3. 测试提示词
要测试一个提示词,您需要获取该提示词,使用您想要测试的输入值调用它,然后使用这些输入值调用模型。 您的 LLM 或应用程序所期望的。
- Python
- TypeScript
from langsmith import Client
from openai import OpenAI
from langchain_core.messages import convert_to_openai_messages
# Connect to LangSmith and OpenAI
client = Client()
oai_client = OpenAI()
# Pull the prompt to use
# You can also specify a specific commit by passing the commit hash "my-prompt:<commit-hash>"
prompt = client.pull_prompt("my-prompt")
# Since our prompt only has one variable we could also pass in the value directly
# The code below is equivalent to formatted_prompt = prompt.invoke("What is the color of the sky?")
formatted_prompt = prompt.invoke({"question": "What is the color of the sky?"})
# Test the prompt
response = oai_client.chat.completions.create(
model="gpt-4o",
messages=convert_to_openai_messages(formatted_prompt.messages),
)
import { OpenAI } from "openai";
import { pull } from "langchain/hub"
import { convertPromptToOpenAI } from "@langchain/openai";
// Connect to LangSmith and OpenAI
const oaiClient = new OpenAI();
// Pull the prompt to use
// You can also specify a specific commit by passing the commit hash "my-prompt:<commit-hash>"
const prompt = await pull("my-prompt");
// Format the prompt with the question
const formattedPrompt = await prompt.invoke({ question: "What is the color of the sky?" });
// Test the prompt
const response = await oaiClient.chat.completions.create({
model: "gpt-4o",
messages: convertPromptToOpenAI(formattedPrompt).messages,
});
4. 迭代提示词
LangSmith 让您的整个团队都能轻松迭代提示词。工作区成员可以选择一个提示词进行迭代,当他们对自己的修改满意后,只需将其保存为新的提交即可。
为了改进您的提示词:
-
我们建议您参考模型提供商提供的文档,以获取最佳提示词创建实践, 例如 OpenAI API 提示工程最佳实践 和 Gemini 提示设计入门。
-
为了帮助您在 LangSmith 中迭代优化提示词,我们创建了 Prompt Canvas —— 一个用于构建和优化提示词的交互式工具。了解如何使用 Prompt Canvas。
To add a new commit to a prompt, you can use the same push_prompt (Python) or pushPrompt (TypeScript) methods as when you first created the prompt.
- Python
- TypeScript
from langsmith import Client
from langchain_core.prompts import ChatPromptTemplate
# Connect to the LangSmith client
client = Client()
# Define the prompt to update
new_prompt = ChatPromptTemplate([
("system", "You are a helpful chatbot. Respond in Spanish."),
("user", "{question}"),
])
# Push the updated prompt making sure to use the correct prompt name
# Tags can help you remember specific versions in your commit history
client.push_prompt("my-prompt", object=new_prompt, tags=["Spanish"])
import { Client } from "langsmith";
import { ChatPromptTemplate } from "@langchain/core/prompts";
// Connect to the LangSmith client
const client = new Client();
// Define the prompt
const newPrompt = ChatPromptTemplate.fromMessages([
["system", "You are a helpful chatbot. Speak in Spanish."],
["user", "{question}"]
]);
// Push the updated prompt making sure to use the correct prompt name
// Tags can help you remember specific versions in your commit history
await client.pushPrompt("my-prompt", {
object: newPrompt,
tags: ["Spanish"]
});