ai-toolsClaudeAnthropicAPIAI应用开发
Claude API实战指南:构建AI应用的最佳实践
2026-05-04
3分钟阅读
作者: CoLink Team掌握Claude API的使用技巧,构建高效、安全的AI应用系统。
Claude API实战指南
Claude是Anthropic开发的先进AI助手,提供强大的API接口供开发者集成。
API基础配置
安装SDK
npm install @anthropic-ai/sdk
基础调用
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
async function chat(message: string) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{
role: 'user',
content: message
}]
});
return response.content[0].text;
}
Prompt缓存(节省成本)
Claude支持Prompt缓存,重复调用可节省90%成本:
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
system: [
{
type: 'text',
text: '你是一个专业的技术文档助手...',
cache_control: { type: 'ephemeral' } // 缓存标记
}
],
messages: [{
role: 'user',
content: '请解释React Hooks的工作原理'
}]
});
// 后续调用相同system prompt时,自动使用缓存
工具调用(Tool Use)
Claude可以调用外部工具/API:
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
tools: [
{
name: 'get_weather',
description: '获取指定城市的天气信息',
input_schema: {
type: 'object',
properties: {
city: { type: 'string', description: '城市名称' }
},
required: ['city']
}
}
],
messages: [{
role: 'user',
content: '北京今天天气怎么样?'
}]
});
// Claude会返回tool_use block
if (response.content[0].type === 'tool_use') {
const { city } = response.content[0].input;
const weather = await getWeather(city); // 调用实际API
// 将结果返回给Claude
const followUp = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [
{ role: 'user', content: '北京今天天气怎么样?' },
{ role: 'assistant', content: response.content },
{
role: 'user',
content: [
{
type: 'tool_result',
tool_use_id: response.content[0].id,
content: weather
}
]
}
]
});
}
多模态能力
Claude支持图像输入:
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{
role: 'user',
content: [
{
type: 'image',
source: {
type: 'base64',
media_type: 'image/jpeg',
data: imageBase64
}
},
{
type: 'text',
text: '请分析这张图片的内容'
}
]
}]
});
最佳实践
1. Token优化
// ❌ 低效:重复的长system prompt
const longPrompt = '你是一个...' // 5000 tokens
// ✅ 高效:使用缓存
const cachedPrompt = {
type: 'text',
text: longPrompt,
cache_control: { type: 'ephemeral' }
}
2. 错误处理
try {
const response = await anthropic.messages.create({...});
} catch (error) {
if (error.status === 429) {
// Rate limit - 等待并重试
await sleep(1000);
return retry();
} else if (error.status === 401) {
// API key错误
throw new Error('Invalid API key');
}
}
3. 安全措施
// 用户输入验证
function sanitizeInput(input: string): string {
// 移除潜在危险内容
return input.replace(/<script>/g, '');
}
// 输出过滤
function validateOutput(output: string): boolean {
// 检查是否符合安全标准
return !output.includes('敏感词');
}
成本控制
Claude定价(2026年5月):
| 模型 | 输入价格 | 输出价格 | 缓存输入 | |------|---------|---------|---------| | Claude Opus 4.6 | $15/M tokens | $75/M tokens | $1.50/M | | Claude Sonnet 4.6 | $3/M tokens | $15/M tokens | $0.30/M | | Claude Haiku 4.5 | $0.25/M tokens | $1.25/M tokens | $0.03/M |
节省技巧:
- 使用Prompt缓存(90%折扣)
- 选择合适模型(Haiku成本低)
- 优化max_tokens设置
- 实现请求合并
实际应用案例
智能客服系统
async function handleCustomerQuery(query: string, context: CustomerContext) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 2048,
system: `你是客服助手。用户信息:${JSON.stringify(context)}`,
messages: [{ role: 'user', content: query }]
});
return response.content[0].text;
}
文档问答
async function documentQA(doc: string, question: string) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
system: [
{
type: 'text',
text: `参考文档内容:\n${doc}`,
cache_control: { type: 'ephemeral' } // 缓存文档
}
],
messages: [{ role: 'user', content: question }]
});
return response.content[0].text;
}
相关阅读: