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

Prompts in the client

📖 Nội dung bài học

Tóm tắt

Bước cuối cùng trong việc xây dựng MCP client của chúng ta là triển khai chức năng prompt. Điều này cho phép chúng ta liệt kê tất cả các prompt có sẵn từ server và lấy các prompt cụ thể với các biến đã được chèn vào.

Triển khai List Prompts

Phương thức list_prompts khá đơn giản. Chúng ta gọi phương thức liệt kê prompt của session và trả về các prompt:

async def list_prompts(self) -> list[types.Prompt]:
    result = await self.session().list_prompts()
    return result.prompts

Lấy các Prompt riêng lẻ

Phương thức get_prompt thú vị hơn vì nó xử lý việc chèn đối số (argument interpolation). Khi chúng ta yêu cầu một prompt cụ thể, chúng ta truyền các đối số để đưa vào hàm prompt. Ví dụ: nếu server của chúng ta có một prompt "format" yêu cầu tham số doc_id, giá trị đó sẽ được truyền qua và chèn vào văn bản prompt thực tế.

async def get_prompt(self, prompt_name, args: dict[str, str]):
    result = await self.session().get_prompt(prompt_name, args)
    return result.messages

Phương thức này trả về các tin nhắn (messages) tạo thành một cuộc hội thoại sẵn sàng để đưa trực tiếp vào Claude.

Kiểm thử Prompt trong thực tế

Khi bạn chạy client và gõ dấu gạch chéo (forward slash), bạn sẽ thấy các prompt có sẵn dưới dạng các lệnh. Chọn một prompt như "format" sẽ yêu cầu bạn chọn từ các tài liệu có sẵn. Sau đó hệ thống sẽ:

  • Lấy prompt với document ID đã được chèn vào.
  • Đưa trực tiếp vào Claude dưới dạng user message.
  • Claude nhận cả hướng dẫn và document ID.
  • Claude dùng các tool có sẵn để lấy nội dung tài liệu.
  • Claude phản hồi với kết quả đã được định dạng lại.

Cách Prompt hoạt động

Prompt định nghĩa một tập hợp các user message và assistant message mà client có thể sử dụng. Các prompt này nên có chất lượng cao, được kiểm thử kỹ lưỡng và phù hợp với mục đích tổng thể của MCP server của bạn.

Luồng công việc (workflow) là:

  1. Viết và đánh giá (eval) một prompt phù hợp với mục đích của MCP server.
  2. Định nghĩa prompt bên trong MCP server bằng decorator @mcp.prompt.
  3. Client của bạn có thể yêu cầu prompt đó bất kỳ lúc nào.
  4. Khi yêu cầu prompt, hãy cung cấp các đối số (arguments) được truyền dưới dạng keyword arguments cho hàm prompt.
  5. Hàm sử dụng các đối số đó để tùy chỉnh nội dung prompt.

Hệ thống này tạo ra các prompt có thể tái sử dụng, được tham số hóa và có thể chia sẻ giữa các client và trường hợp sử dụng khác nhau, giúp MCP server của bạn trở nên linh hoạt và mạnh mẽ hơn.

🔁 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?