Bỏ qua đến nội dung chính

Sampling walkthrough

📖 Nội dung bài học

[

chi tiết

1
tải về 1. Khởi tạo sampling

Trên server, trong quá trình gọi tool, hãy chạy phương thức create_message(), truyền vào các tin nhắn mà bạn muốn gửi đến một mô hình ngôn ngữ.

2. Sampling callback

Trên client, bạn phải triển khai một sampling callback (callback lấy mẫu). Nó sẽ nhận được danh sách các tin nhắn do server cung cấp.

3. Định dạng tin nhắn (Message formats)

Danh sách tin nhắn do server cung cấp được định dạng để giao tiếp trong MCP. Các tin nhắn riêng lẻ không đảm bảo sẽ tương thích ngay với bất kỳ LLM SDK nào bạn đang dùng.

Ví dụ: nếu bạn dùng Anthropic SDK, bạn sẽ phải viết một chút logic chuyển đổi để biến các tin nhắn MCP thành định dạng tương thích với SDK của Anthropic.

4. Trả về văn bản được tạo

Sau khi tạo văn bản bằng LLM, bạn sẽ trả về một CreateMessageResult, trong đó chứa văn bản đã được tạo.

5. Kết nối callback

Đừng quên: callback trên client cần được truyền vào lệnh gọi ClientSession.

6. Nhận kết quả

Sau khi client đã tạo và trả về văn bản, nó sẽ được gửi đến server. Bạn có thể làm bất cứ điều gì với văn bản này:

  • Sử dụng nó như một phần của quy trình công việc (workflow) trong tool của bạn
  • Quyết định thực hiện một lệnh gọi sampling khác
  • Trả về văn bản đã tạo

← Trước Tiếp theo →

Tệp tin

📄 .gitignore

📄 client.py

📄 pyproject.toml

📄 README.md

📄 server.py

server.py×

from mcp.types import SamplingMessage, TextContent

mcp = FastMCP(name="Demo Server")

@mcp.tool()
async def summarize(text_to_summarize: str, ctx: Context):
    prompt = f"""
        Hãy tóm tắt văn bản 
        sau đây:
        {text_to_summarize}
    """
    
    result = await ctx.session.create_message(
        messages=[
            SamplingMessage(
                role="user", 
                content=TextContent(
                    type="text", 
                    text=prompt
                )
            )
        ],
        max_tokens=4000,
        system_prompt="Bạn là một trợ lý nghiên cứu chuyên nghiệp.",
    )
    
    if result.content.type == "text":
        return result.content.text

Tóm tắt

Tải về

Các bước hướng dẫn

Hãy cùng tìm hiểu kỹ hơn cách triển khai tính năng này bằng cách đi qua một dự án mẫu.

Bỏ qua Tiếp theo

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?