Claude в Google Vertex AI

Подключение Claude через Google Cloud — авторизация, регионы, биллинг.

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

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Vertex AI Setup
  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. Controlling model output
  14. Structured data
  15. Structured data exercise
  16. Quiz on accessing Claude with the API
  17. Prompt evaluation
  18. A typical eval workflow
  19. Generating test datasets
  20. Running the eval
  21. Model based grading
  22. Code based grading
  23. Exercise on prompt evals
  24. Quiz on prompt evaluation
  25. Prompt engineering
  26. Being clear and direct
  27. Being specific
  28. Structure with XML tags
  29. Providing examples
  30. Exercise on prompting
  31. Quiz on prompt engineering techniques
  32. Introducing tool use
  33. Project overview
  34. Tool functions
  35. Tool schemas
  36. Handling message blocks
  37. Sending tool results
  38. Multi-turn conversations with tools
  39. Implementing multiple turns
  40. Using multiple tools
  41. The batch tool
  42. Tools for structured data
  43. The text edit tool
  44. The web search tool
  45. Quiz on tool use with Claude
  46. Introducing Retrieval Augmented Generation
  47. Text chunking strategies
  48. Text embeddings
  49. The full RAG flow
  50. Implementing the RAG flow
  51. BM25 lexical search
  52. A Multi-index RAG pipeline
  53. Reranking results
  54. Contextual retrieval
  55. Quiz on Retrieval Augmented Generation
  56. Extended thinking
  57. Image support
  58. PDF support
  59. Citations
  60. Prompt caching
  61. Rules of prompt caching
  62. Prompt caching in action
  63. Quiz on features of Claude
  64. Introducing MCP
  65. MCP clients
  66. Project setup
  67. Defining tools with MCP
  68. The server inspector
  69. Implementing a client
  70. Defining resources
  71. Accessing resources
  72. Defining prompts
  73. Prompts in the client
  74. MCP review
  75. Quiz on Model Context Protocol
  76. Anthropic apps
  77. Claude Code setup
  78. Claude Code in action
  79. Enhancements with MCP servers
  80. Parallelizing Claude Code
  81. Automated debugging
  82. Computer use
  83. How computer use works
  84. Agents and workflows
  85. Parallelization workflows
  86. Chaining workflows
  87. Routing workflows
  88. Agents and tools
  89. Environment inspection
  90. Workflows vs agents
  91. Quiz on agents and workflows
  92. Final assessment quiz
  93. Course Wrap Up
  94. Course Description
  95. Course Description
  96. Course Description
  97. Course Description
  98. Course Description
  99. Course Description
  100. Course Description

Введение: Что такое системные промпты?

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

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

Зачем нужны системные промпты?

Представьте, что вы создаете чат-бота, который должен выступать в роли репетитора по математике. Когда студент спрашивает: "Как решить уравнение 5x + 2 = 3 для x?", вы хотите, чтобы Claude вел себя как настоящий учитель, а не просто выдавал готовый ответ. Хороший репетитор по математике должен:

Вы определенно не хотите, чтобы Claude:

Без системного промпта Claude может дать прямой ответ, что не способствует обучению. Системный промпт позволяет нам "запрограммировать" желаемое поведение, гарантируя, что Claude будет действовать в соответствии с ролью репетитора, а не просто как общий LLM.

Как работают системные промпты?

Системные промпты предоставляют Claude руководящие указания о том, как реагировать. Вы определяете их как обычные текстовые строки и передаете в вызов функции создания сообщения (например, через Claude API или SDK). Ключевые преимущества использования системных промптов включают:

Вот базовая структура того, как системный промпт передается в API:

system_prompt = """
Вы терпеливый репетитор по математике.
Не отвечайте напрямую на вопросы студента.
Направляйте его к решению шаг за шагом.
"""

client.messages.create(
    model=model,
    messages=messages,
    max_tokens=1000,
    system=system_prompt
)

В этом примере строка system_prompt содержит инструкции, которые Claude будет учитывать при формировании своего ответа на каждое последующее сообщение пользователя. Параметр system в вызове client.messages.create — это то место, куда передается этот промпт.

Наглядная разница: Claude с системным промптом и без него

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

Без системного промпта

Если студент спрашивает: "Как решить 5x + 2 = 3 для x?", и мы не используем системный промпт, Claude, скорее всего, немедленно предоставит полное пошаговое решение:

"Чтобы решить уравнение 5x + 2 = 3 для x, выполните следующие шаги:

  1. Вычтите 2 из обеих сторон уравнения: 5x + 2 - 2 = 3 - 2, что дает 5x = 1.
  2. Разделите обе стороны на 5: 5x / 5 = 1 / 5, что дает x = 1/5.
Таким образом, x = 1/5."

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

С системным промптом "Репетитор по математике"

Теперь, если мы применим системный промпт, который мы определили ранее ("Вы терпеливый репетитор по математике. Не отвечайте напрямую на вопросы студента. Направляйте его к решению шаг за шагом."), ответ Claude изменится кардинально. Вместо того чтобы предоставить полное решение, Claude задаст наводящие вопросы:

"Отличный вопрос! Прежде чем мы перейдем к решению, как вы думаете, какой будет хороший первый шаг, чтобы изолировать x? Подумайте, какую операцию нам может понадобиться выполнить с обеих сторон уравнения, чтобы начать перемещать члены?"

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

Создание гибких функций чата

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

Вот пример того, как можно реализовать такую функцию:

def chat(messages, system=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
    }
    if system:
        params["system"] = system # Условно добавляем системный промпт, если он предоставлен
    
    message = client.messages.create(**params)
    return message.content[0].text

Такой подход учитывает важную деталь: Claude API не принимает пустой или None системный промпт. Поэтому вам нужно условно включать параметр system только тогда, когда он действительно предоставлен. Это делает вашу функцию надежной и универсальной.

Теперь вы можете вызывать свою функцию chat как с системным промптом, так и без него:

# Без системного промпта
messages_for_general_chat = [{"role": "user", "content": "Расскажи мне о погоде."}]
answer_general = chat(messages_for_general_chat)
print(f"Общий ответ: {answer_general}")

# С системным промптом (репетитор по математике)
math_tutor_system = """
Вы терпеливый репетитор по математике.
Не отвечайте напрямую на вопросы студента.
Направляйте его к решению шаг за шагом.
"""
messages_for_math_tutor = [{"role": "user", "content": "Как решить 5x + 2 = 3 для x?"}]
answer_math_tutor = chat(messages_for_math_tutor, system=math_tutor_system)
print(f"Ответ репетитора: {answer_math_tutor}")

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

Заключение

Системные промпты являются неотъемлемым элементом для создания AI-приложений, которые ведут себя последовательно и адекватно своему предполагаемому назначению. Они позволяют разработчикам точно настраивать "личность" и "поведение" Claude, превращая его из универсального LLM в специализированный инструмент, способный выполнять конкретные задачи с высокой степенью релевантности и эффективности.

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