Trang chủ / Bài 11
Chuyên sâu ⏱ 35 phút ▶ Video
11

Anthropic SDK — Xây dựng AI App

Dùng Claude API trực tiếp để tạo ứng dụng AI tùy chỉnh với Python SDK

🎬

Video cho bài học này đang được chuẩn bị.

🎯 Mục tiêu bài học

  • Cài đặt và sử dụng Anthropic Python SDK
  • Xây dựng chatbot với conversation history
  • Tích hợp tool use (function calling) vào ứng dụng
  • Tối ưu chi phí với prompt caching

Anthropic SDK là gì?

Ngoài Claude Code CLI, Anthropic cung cấp Python SDK để bạn tích hợp Claude trực tiếp vào ứng dụng của mình. Đây là nền tảng để xây dựng chatbot, AI assistant, automated pipelines, và mọi sản phẩm AI tùy chỉnh.

Cài đặt

pip install anthropic

Gọi API cơ bản

import anthropic

client = anthropic.Anthropic(api_key="sk-ant-...")

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Giai thich DynamoDB GSI la gi?"}
    ]
)
print(message.content[0].text)

Conversation với lịch sử

conversation = []

def chat(user_message: str) -> str:
    conversation.append({"role": "user", "content": user_message})
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=2048,
        system="Ban la tro ly lap trinh chuyen ve Python va AWS.",
        messages=conversation,
    )
    reply = response.content[0].text
    conversation.append({"role": "assistant", "content": reply})
    return reply

Tool Use (Function Calling)

Cho Claude khả năng gọi hàm Python thực trong ứng dụng:

tools = [{
    "name": "get_lesson_count",
    "description": "Lay so luong bai hoc trong DynamoDB",
    "input_schema": {
        "type": "object",
        "properties": {
            "category": {"type": "string"}
        }
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Co bao nhieu bai hoc co ban?"}]
)

if response.stop_reason == "tool_use":
    tool_call = next(b for b in response.content if b.type == "tool_use")
    print(f"Claude goi: {tool_call.name}({tool_call.input})")

Prompt Caching — Tiết kiệm 90% chi phí

Với context dài lặp đi lặp lại (system prompt, tài liệu), dùng cache để tiết kiệm token:

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": long_system_prompt,           # 10,000 tokens
        "cache_control": {"type": "ephemeral"}  # Cache 5 phut
    }],
    messages=[{"role": "user", "content": "Cau hoi ngan"}]
)
# Lan dau: tinh phi day du
# Lan 2+: chi tinh 10% gia goc cho phan cached

Streaming Response

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Viet bai tho ve Python"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

💡 Model IDs mới nhất (2025)

  • claude-opus-4-7 — Mạnh nhất, dùng cho tasks phức tạp
  • claude-sonnet-4-6 — Cân bằng tốt giữa sức mạnh và tốc độ
  • claude-haiku-4-5 — Nhanh và rẻ nhất, phù hợp với tasks đơn giản