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

Функции-инструменты (Tool Functions): Расширяем возможности Claude

При создании интеллектуальных приложений на базе больших языковых моделей (LLM), таких как Claude, часто возникает необходимость предоставить ИИ доступ к актуальной информации в реальном времени или возможность выполнять определенные действия во внешних системах. Сама по себе LLM обладает знаниями, полученными в процессе обучения, но не может, например, узнать текущую погоду, отправить электронное письмо или забронировать билет. Именно здесь на помощь приходят функции-инструменты (Tool Functions) – мощный механизм, позволяющий Claude взаимодействовать с внешним миром.

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

Что такое функции-инструменты и как они работают?

По своей сути, функция-инструмент — это обычная функция, которую вы пишете в своем коде. Например, если пользователь спрашивает: "Какое сейчас время в Нью-Йорке?", Claude понимает, что для ответа ему нужна актуальная информация, которой у него нет. Вместо того чтобы пытаться угадать, Claude генерирует "запрос на использование инструмента" (tool use request), который описывает, какую функцию он хотел бы вызвать (например, get_current_datetime) и с какими параметрами (например, location="New York").

Ваше приложение, выступающее в роли оркестратора, перехватывает этот запрос от Claude, выполняет соответствующую Python-функцию (например, get_current_datetime("America/New_York")), получает результат (например, "15:30:25") и передает его обратно Claude. Получив эту информацию, Claude может сформулировать точный и полезный ответ для пользователя: "Сейчас в Нью-Йорке 15:30:25".

Этот механизм позволяет Claude:

Лучшие практики при разработке функций-инструментов

Чтобы функции-инструменты были максимально эффективными и надежными, следуйте этим рекомендациям:

Создание вашей первой функции-инструмента: Получение текущей даты и времени

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

import datetime

def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    """
    Возвращает текущую дату и время в указанном формате.

    Параметры:
    date_format (str): Строка формата для даты и времени (по умолчанию "%Y-%m-%d %H:%M:%S").
                       Примеры: "%H:%M", "%A, %d %B %Y".
    """
    if not date_format:
        raise ValueError("Параметр 'date_format' не может быть пустым.")
    
    return datetime.datetime.now().strftime(date_format)

Эта функция использует встроенный модуль Python datetime для получения текущего времени и форматирования его в соответствии с предоставленной строкой формата. Формат по умолчанию "%Y-%m-%d %H:%M:%S" дает нам год-месяц-день час:минута:секунда.

Вы можете увидеть, как она работает с разными форматами:

Проверка if not date_format: raise ValueError(...) гарантирует, что Claude не сможет передать пустую строку для формата даты. Хотя такая специфическая ошибка маловероятна, она демонстрирует шаблон валидации входных данных и предоставления полезных сообщений об ошибках, из которых Claude может извлекать уроки.

Интеграция функций-инструментов с Claude

Создание самой функции — это только первый шаг. Чтобы Claude мог "знать" о существовании вашей функции и правильно ее вызывать, вам необходимо описать ее в формате JSON schema. Эта схема содержит информацию о названии функции, ее описании, а также о параметрах, которые она принимает (их типы, описания, обязательность). Затем вы передаете эту JSON schema вместе с запросом к Claude через его API.

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

  1. Получить ответ от Claude.
  2. Обнаружить блок tool_use.
  3. Извлечь название функции и параметры.
  4. 4. Выполнить соответствующую Python-функцию в вашем коде.
  5. Получить результат выполнения функции.
  6. Отправить этот результат обратно Claude (в виде блока tool_result).
  7. Claude использует этот результат для генерации окончательного ответа пользователю.

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