Разработка с 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

Структурирование промптов с помощью XML-тегов для Claude

При работе с большими и сложными промптами для больших языковых моделей (LLM), таких как Claude, иногда возникает проблема: модель может испытывать трудности с пониманием того, какие части текста связаны друг с другом или что представляют собой различные разделы. Это особенно актуально, когда вы вставляете в промпт значительные объемы данных или смешиваете разные типы информации. XML-теги предоставляют простой, но мощный способ добавить структуру и ясность вашим промптам, значительно улучшая способность Claude обрабатывать и интерпретировать ваш запрос.

Почему структура промпта имеет значение?

Представьте, что вам нужно проанализировать 20 страниц отчетов о продажах и на основе этих данных дать рекомендации. Если вы просто вставите весь текст отчетов в промпт вместе с вашими инструкциями, Claude может столкнуться с трудностями. Модель может нечетко различать, где заканчиваются ваши инструкции и начинается фактическая информация, которую нужно анализировать. Это может привести к неточным ответам, игнорированию части данных или даже "галлюцинациям", когда Claude пытается заполнить пробелы.

Нечеткие границы затрудняют для Claude правильное понимание вашего намерения. Обернув данные о продажах в XML-теги, например, <sales_records>...</sales_records>, вы создаете четкие разделители. Эти разделители помогают Claude понять структуру вашего промпта: "Вот мои инструкции, а вот данные, которые я хочу, чтобы ты проанализировал в соответствии с этими инструкциями". Это значительно повышает точность и релевантность ответов модели.

Практические примеры использования XML-тегов

Давайте рассмотрим более наглядные примеры, демонстрирующие важность XML-тегов.

Пример 1: Код и документация

Представьте, что вы просите Claude отладить фрагмент кода, используя предоставленную документацию. Если вы просто смешаете код и текст документации в одном промпте, это создаст путаницу. Claude может попытаться отладить саму документацию, или, наоборот, использовать части кода как инструкции, а не как объект для анализа. Это "неудачная" версия промпта, где практически невозможно отличить код от документации.

Гораздо более эффективный подход — использовать теги для создания четких границ. Например:

<instructions>
  Пожалуйста, отладьте следующий фрагмент кода, используя предоставленную документацию.
  Найдите потенциальные ошибки и предложите исправления.
</instructions>

<code_snippet>
  def calculate_discount(price, quantity):
      if quantity > 10:
          return price * quantity * 0.9
      else:
          return price * quantity
</code_snippet>

<documentation>
  Функция `calculate_discount` должна применять скидку 15% для заказов с количеством более 5 единиц.
  Для заказов с количеством 10 и более единиц должна применяться скидка 20%.
</documentation>

В этой "лучшей" версии теги <instructions>, <code_snippet> и <documentation> четко разделяют различные типы контента. Claude мгновенно понимает, что является инструкциями, что является кодом для отладки, а что — справочной информацией. Это позволяет модели сосредоточиться на выполнении задачи с максимальной точностью.

Пример 2: Информация об атлете

Рассмотрим другой сценарий, где вам нужно сгенерировать план питания на основе подробной информации об атлете:

<athlete_information>
  <height>188 см</height>
  <weight>82 кг</weight>
  <goal>Набор мышечной массы</goal>
  <dietary_restrictions>Вегетарианец, непереносимость лактозы</dietary_restrictions>
  <activity_level>Высокий (5 тренировок в неделю)</activity_level>
</athlete_information>

<request>
  Сгенерируйте подробный недельный план питания, учитывая информацию об атлете выше.
  План должен быть сбалансированным, богатым белком и соответствовать его диетическим ограничениям и целям.
</request>

Такая структура делает абсолютно ясным, что рост, вес, цель, диетические ограничения и уровень активности — это все связанные данные об атлете, которые должны рассматриваться вместе при генерации плана питания. Без этих тегов Claude мог бы воспринять "Вегетарианец" как отдельную инструкцию, а не как часть профиля атлета, что могло бы привести к менее интегрированному и точному плану.

Использование пользовательских тегов

Вам не обязательно использовать официальные XML-теги или следовать строгим XML-схемам. Вы можете создавать описательные имена тегов, которые имеют смысл для вашего контента. Например:

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

Когда использовать XML-теги?

XML-теги наиболее полезны в следующих случаях:

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

Заключение

Хотя вы можете не заметить кардинальных улучшений при использовании XML-тегов в очень простых промптах, их ценность значительно возрастает по мере усложнения ваших запросов и увеличения объема разнообразного контента. Структурирование промптов с помощью XML-тегов — это мощная техника в области prompt engineering, которая позволяет вам более эффективно общаться с Claude, обеспечивая более точные, релевантные и надежные ответы. Это инвестиция в ясность, которая окупается, когда вы строите сложные и многофункциональные приложения на базе Claude API или SDK.