提示工程快速入门 (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)——一个构建和优化提示的交互式工具。了解如何使用 提示画布。
要向提示添加新的提交,您可以使用与首次创建提示时相同的 push_prompt
(Python)或 pushPrompt
(TypeScript)方法。
- 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"]
});