Claude Code 使用教程:从零开始构建你的第一个 AI 助手应用

1次阅读
没有评论

共计 2636 个字符,预计需要花费 7 分钟才能阅读完成。

image.webp

Claude 核心能力边界

Claude 作为 Anthropic 研发的 AI 助手,其 API 提供以下核心能力边界:

Claude Code 使用教程:从零开始构建你的第一个 AI 助手应用

  • 上下文长度 :Claude 2 支持最大 100K token 的上下文窗口,而 Claude Instant 为 9K token
  • 输入格式 :支持纯文本、Markdown 和有限 HTML 标签(如 <code><table>
  • 输出控制 :可通过 max_tokens 参数限制响应长度(默认 2048 tokens)
  • 速率限制 :免费层默认 5 RPM(每分钟请求数),付费层可提升至 50+ RPM
  • 功能边界 :不支持图像 / 语音处理、实时网络检索或代码执行

环境准备

  1. 安装 Python 3.8+ 并验证版本

    python --version

  2. 创建虚拟环境

    python -m venv claude_env
    source claude_env/bin/activate  # Linux/Mac
    claude_env\Scripts\activate    # Windows

  3. 安装必要依赖

    pip install httpx python-dotenv

认证设置

  1. 获取 API Key
  2. 登录 Anthropic 控制台
  3. 在「API Keys」页面创建新密钥

  4. 安全存储最佳实践

  5. 使用 .env 文件存储密钥(添加到 .gitignore

    # .env 示例
    CLAUDE_API_KEY=sk-your-key-here

  6. 环境变量加载

    from dotenv import load_dotenv
    import os
    
    load_dotenv()
    API_KEY = os.getenv("CLAUDE_API_KEY")
    assert API_KEY, "API key not found in .env"

基础对话实现

import httpx
from typing import AsyncGenerator

async def chat_completion(
    prompt: str,
    model: str = "claude-2",
    max_tokens: int = 1024,
    stream: bool = False
) -> AsyncGenerator[str, None]:
    headers = {
        "x-api-key": API_KEY,
        "anthropic-version": "2023-06-01",
        "content-type": "application/json"
    }

    payload = {
        "model": model,
        "prompt": f"\n\nHuman: {prompt}\n\nAssistant:",
        "max_tokens_to_sample": max_tokens,
        "stream": stream
    }

    async with httpx.AsyncClient() as client:
        try:
            if stream:
                async with client.stream(
                    "POST",
                    "https://api.anthropic.com/v1/complete",
                    headers=headers,
                    json=payload
                ) as response:
                    response.raise_for_status()
                    async for chunk in response.aiter_lines():
                        if chunk.startswith("data:"):
                            yield chunk[5:].strip()
            else:
                response = await client.post(
                    "https://api.anthropic.com/v1/complete",
                    headers=headers,
                    json=payload
                )
                response.raise_for_status()
                yield response.json()["completion"]
        except httpx.HTTPStatusError as e:
            print(f"API request failed: {e.response.status_code}")
            raise

上下文管理技巧

  1. System Prompt 设计规范
  2. 位置:作为对话历史的第一条消息
  3. 内容结构:

    \n\nHuman: < 系统指令 >
    你是一个专业的编程助手,请用中文回答技术问题,对于不确定的信息应明确说明 "我不确定"。回答请保持简洁,最多 3 个段落。\n\nAssistant: 明白,我将按照要求提供帮助。

  4. 对话历史维护

  5. 保留最近 3-5 轮对话(避免超过 80% 上下文窗口)
  6. 对长对话进行自动摘要(可使用 Claude 生成)

错误处理策略

状态码 原因 处理方案
429 速率限制 指数退避重试(建议初始延迟 2s)
503 服务不可用 线性重试(3 次间隔 5s)
400 无效请求 检查 prompt 格式和 token 计数
401 认证失败 验证 API Key 和请求头

生产级建议

  1. 重试机制实现

    from tenacity import (
        retry,
        stop_after_attempt,
        wait_exponential,
        retry_if_exception_type
    )
    
    @retry(stop=stop_after_attempt(3),
        wait=wait_exponential(multiplier=1, max=10),
        retry=retry_if_exception_type(httpx.HTTPStatusError)
    )
    async def robust_request():
        # 包装原有请求逻辑 

  2. 敏感信息过滤

  3. 使用正则表达式检测密钥 / 手机号模式
  4. 在客户端替换为占位符(如 <API_KEY>

  5. 成本控制方法

  6. 使用 tiktoken 库估算 token 数
  7. 设置对话长度阈值(如 50K tokens 后触发摘要)

Claude 模型对比

特性 Claude Instant Claude 2
上下文窗口 9K tokens 100K tokens
响应速度 快(<1s) 较慢(2-5s)
复杂推理能力 基础
适合场景 实时交互 深度分析
价格(每千 token) $0.00163 $0.01102

警示栏

千万不要这么做
– 将 API Key 硬编码在源码中或提交到公开仓库
– 不处理 streaming 响应中的部分失败(会导致上下文断裂)
– 忽略 max_tokens 限制(可能产生意外费用)

进阶思考题

  1. 如何实现多轮对话中自动检测并修复上下文断裂?
  2. 当遇到 “I cannot answer that question” 时,有哪些策略可以改进 prompt 设计?
  3. 怎样设计监控系统来跟踪 token 消耗和 API 调用质量?

通过本教程,您已经掌握了 Claude API 的核心使用模式。建议从简单的问答机器人开始,逐步尝试更复杂的应用场景。实际开发中要特别注意速率限制和上下文管理,这些往往是生产环境问题的主要来源。

正文完
 0
评论(没有评论)