Разработка с Claude API

Запросы, потоковые ответы, tool use, структурированный вывод и стоимость.

92 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Getting an API key
  5. Making a request
  6. Multi-Turn conversations
  7. Chat exercise
  8. System prompts
  9. System prompts exercise
  10. Temperature
  11. Course satisfaction survey
  12. Response streaming
  13. Structured data
  14. Structured data exercise
  15. Quiz on accessing Claude with the API
  16. Prompt evaluation
  17. A typical eval workflow
  18. Generating test datasets
  19. Running the eval
  20. Model based grading
  21. Code based grading
  22. Exercise on prompt evals
  23. Quiz on prompt evaluation
  24. Prompt engineering
  25. Being clear and direct
  26. Being specific
  27. Structure with XML tags
  28. Providing examples
  29. Exercise on prompting
  30. Quiz on prompt engineering techniques
  31. Introducing tool use
  32. Project overview
  33. Tool functions
  34. Tool schemas
  35. Handling message blocks
  36. Sending tool results
  37. Multi-turn conversations with tools
  38. Implementing multiple turns
  39. Using multiple tools
  40. Fine grained tool calling
  41. The text edit tool
  42. The web search tool
  43. Quiz on tool use with Claude
  44. Introducing Retrieval Augmented Generation
  45. Text chunking strategies
  46. Text embeddings
  47. The full RAG flow
  48. Implementing the RAG flow
  49. BM25 lexical search
  50. A Multi-Index RAG pipeline
  51. Extended thinking
  52. Image support
  53. PDF support
  54. Citations
  55. Prompt caching
  56. Rules of prompt caching
  57. Prompt caching in action
  58. Code execution and the Files API
  59. Quiz on features of Claude
  60. Introducing MCP
  61. MCP clients
  62. Project setup
  63. Defining tools with MCP
  64. The server inspector
  65. Implementing a client
  66. Defining resources
  67. Accessing resources
  68. Defining prompts
  69. Prompts in the client
  70. MCP review
  71. Quiz on Model Context Protocol
  72. Anthropic apps
  73. Claude Code setup
  74. Claude Code in action
  75. Enhancements with MCP servers
  76. Agents and workflows
  77. Parallelization workflows
  78. Chaining workflows
  79. Routing workflows
  80. Agents and tools
  81. Environment inspection
  82. Workflows vs agents
  83. Quiz on Agents and Workflows
  84. Final Assessment
  85. Course Wrap Up
  86. What You'll Learn
  87. What You'll Learn
  88. What You'll Learn
  89. What You'll Learn
  90. What You'll Learn
  91. What You'll Learn
  92. What You'll Learn

Управление промптами в клиентских приложениях с использованием MCP

В мире разработки с использованием больших языковых моделей (LLM), таких как Claude, качество и консистентность промптов играют ключевую роль. Однако по мере роста сложности приложений и числа сценариев использования, управление промптами может стать непростой задачей. Именно здесь на помощь приходит концепция централизованного управления промптами, часто реализуемая через платформы, подобные MCP (Managed Prompting Platform/Server).

MCP предоставляет собой серверную инфраструктуру, которая определяет и хранит набор высококачественных, тщательно протестированных промптов. Эти промпты представляют собой структурированные диалоги, состоящие из сообщений пользователя и ассистента, готовые к использованию клиентскими приложениями. Такой подход гарантирует, что все клиенты используют одни и те же проверенные инструкции, что повышает надежность и предсказуемость ответов Claude, а также упрощает процесс обновления и масштабирования промптов.

Получение списка доступных промптов

Первым шагом для любого клиентского приложения, взаимодействующего с MCP, является получение информации о том, какие промпты доступны. Это позволяет клиенту динамически адаптироваться к изменениям на сервере и предлагать пользователям актуальный набор функций. Для этого клиентское приложение обычно реализует метод, который запрашивает у сервера список всех доступных промптов.

Концептуально это выглядит как вызов метода list_prompts на стороне клиента, который, в свою очередь, обращается к MCP серверу. Например, в асинхронном Python-клиенте это может быть реализовано следующим образом:

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

Эта простая реализация вызывает соответствующий метод сессии клиента, который взаимодействует с MCP, и возвращает массив объектов Prompt. Каждый объект Prompt может содержать имя промпта, его описание и другие метаданные, позволяющие клиенту понять его назначение.

Извлечение и использование индивидуальных промптов

После того как клиент получил список доступных промптов, он может запросить конкретный промпт по его имени. Однако многие промпты не являются статичными; они требуют динамических данных для выполнения своей задачи. Например, промпт для форматирования документа должен знать, какой именно документ нужно форматировать. Для этого используется механизм аргументов.

Метод get_prompt позволяет клиенту получить определенный промпт, интерполировав в него необходимые аргументы. Когда вы запрашиваете промпт, вы предоставляете словарь аргументов, которые передаются функции промпта на сервере MCP в качестве именованных аргументов:

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

Этот метод возвращает список сообщений (messages), которые формируют готовую к отправке в Claude беседу. Таким образом, клиент получает уже "собранный" промпт, адаптированный под конкретные входные данные.

Как работают аргументы промптов

Гибкость промптов с аргументами является одним из ключевых преимуществ MCP. На серверной стороне промпт определяется не просто как строка текста, а как функция, которая может принимать параметры. Например, промпт для форматирования документа может ожидать идентификатор документа:

def format_document(doc_id: str):
# doc_id будет интерполирован в текст промпта
# ... возвращает список сообщений для Claude ...

Когда клиент вызывает get_prompt, словарь аргументов (args) должен содержать ожидаемые ключи, такие как "doc_id". Сервер MCP передает эти значения в качестве именованных аргументов функции промпта. Функция промпта затем использует эти значения для динамического формирования текста промпта, вставляя их в соответствующие места шаблона. Это позволяет создавать универсальные промпты, которые могут быть повторно использованы для различных входных данных без необходимости создавать новый промпт для каждого случая.

Практическое применение и тестирование промптов

После реализации механизмов получения и использования промптов, их можно эффективно тестировать и применять в различных клиентских интерфейсах, например, через интерфейс командной строки (CLI) или графические приложения. Представьте следующий рабочий процесс:

  1. Выбор промпта пользователем: В CLI, когда пользователь вводит символ косой черты (/), ему может быть предложен список доступных промптов (например, "format_document", "summarize_article"). Пользователь выбирает нужный промпт.
  2. Запрос аргументов: Если выбранный промпт требует аргументов (например, "format_document" требует doc_id), клиентское приложение запрашивает у пользователя необходимые данные (например, "Введите ID документа:").
  3. Формирование и отправка промпта: Клиентское приложение вызывает метод get_prompt на MCP сервере, передавая имя промпта и собранные аргументы. MCP сервер интерполирует эти значения в шаблон промпта и возвращает готовый набор сообщений.
  4. Взаимодействие с Claude: Полученный набор сообщений напрямую отправляется в Claude. Claude обрабатывает запрос, при необходимости используя доступные инструменты для получения дополнительных данных (например, для извлечения содержимого документа по doc_id), и выполняет задачу.

Этот процесс демонстрирует, как MCP и параметризованные промпты обеспечивают мощный и гибкий способ взаимодействия с Claude, позволяя динамически адаптировать запросы к конкретным потребностям пользователя.

Лучшие практики при создании промптов для MCP

Для обеспечения максимальной эффективности и надежности промптов, хранящихся на вашем MCP сервере, рекомендуется следовать следующим лучшим практикам:

Промпты, управляемые через MCP, служат мостом между предопределенной функциональностью и динамическими потребностями пользователей. Они предоставляют Claude структурированные отправные точки для выполнения сложных задач, сохраняя при этом гибкость за счет параметризации. Такой подход значительно упрощает разработку, тестирование и масштабирование приложений, использующих мощь больших языковых моделей.