0Pricing
AI Prompt Engineering · Урок

Предоставление исходной информации

Когда и как включать предметные знания, ограничения и сведения о проекте

«Предоставление исходной информации» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.

Почему важна исходная информация

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

Без исходной информации модель создаёт результат для воображаемой типовой ситуации. С исходной информацией она создаёт результат для Вашей ситуации.

Когда следует включать знания предметной области

Включайте знания предметной области в запрос, если:

  • Тема допускает несколько трактовок в разных отраслях
  • Вы работаете со специализированной терминологией
  • Правильный ответ зависит от норм или правил, действующих в конкретной области
  • Модель может дать общий ответ, когда Вам нужен ответ для конкретной области

Не вставляйте учебники целиком — кратко изложите 2–3 факта предметной области, наиболее важных для Вашего вопроса.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

domain_knowledge = (
    'Domain: algorithmic trading at a regulated broker-dealer in the US. '
    'Relevant rules: SEC Rule 15c3-5 (Market Access Rule) requires pre-trade risk checks. '
    'Latency budget: all risk checks must complete in under 100 microseconds. '
    'Stack: C++ for the matching engine, Python for strategy logic.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            f'{domain_knowledge}\n\n'
            f'Question: How should we implement position limit checks for our order router?'
        )
    }]
)
print(response.content[0].text)

Сведения о проекте

Сведения о проекте сообщают модели конкретный контекст Вашей работы. К важным сведениям о проекте относятся:

  • Что представляет собой проект и на каком этапе он находится (MVP / масштабирование / зрелая стадия)
  • Технологический стек и архитектура
  • Размер команды и уровень квалификации
  • График и ограничения по срокам
  • Недавние изменения или события, влияющие на вопрос
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

project_context = (
    'Project: a mobile recipe app (React Native, Node.js backend, MongoDB). '
    'Stage: pre-launch, 2 weeks to go live. '
    'Team: 2 frontend devs, 1 backend dev, no dedicated QA. '
    'Current issue: app search is slow (3-5 seconds) with 50,000 recipes in the DB. '
    'Constraint: no time for a full re-architecture before launch.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            f'{project_context}\n\n'
            f'Suggest 3 quick wins to improve search speed before launch. '
            f'Each suggestion: what to do (1 sentence), estimated effort (hours), '
            f'expected improvement.'
        )
    }]
)
print(response.choices[0].message.content)

Передача уже выполненной работы

Если Вы поделитесь уже выполненной работой, модель сможет опереться на неё, а не начинать с нуля. Включайте уже выполненную работу, если Вам нужны:

  • Продолжение или расширение документа либо кода
  • Критика и предложения по улучшению
  • Согласование стиля (сохранение тона и формата существующего материала)
  • Проверка согласованности (вписывается ли новый фрагмент в существующую структуру?)
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

existing_intro = (
    'At Northlight Labs, we build AI tools that work the way humans think — '
    'not the other way around. Founded in 2022 by two ex-Google researchers, '
    'we have helped 500 companies ship smarter products without hiring ML teams.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{
        'role': 'user',
        'content': (
            'Here is our existing company intro paragraph:\n\n'
            f'{existing_intro}\n\n'
            'Write a second paragraph (matching this exact tone and style) '
            'that describes our flagship product: an API that lets developers '
            'add natural language search to any database with 3 lines of code. '
            'Keep it under 60 words.'
        )
    }]
)
print(response.content[0].text)

Описание ограничений заранее

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

Типы ограничений, которые следует указать:

  • Технические: «Python 3.11, без сторонних библиотек»
  • Бюджетные: «0 долларов — только открытое ПО»
  • Временные: «Должно быть выполнено за двухчасовой спринт»
  • Нормативные: «В журналах не должно быть персональных данных»
  • Организационные: «Нельзя изменить схему базы данных»
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'We need to add rate limiting to our REST API.\n\n'
            'Constraints:\n'
            '- Python 3.11 FastAPI application\n'
            '- No external dependencies beyond what is already installed (requests, pydantic, uvicorn)\n'
            '- Must work as a single process (no Redis, no shared state between workers)\n'
            '- Rate limit: 100 requests per minute per IP address\n'
            '- If limit exceeded, return HTTP 429 with Retry-After header\n\n'
            'Show me a complete implementation.'
        )
    }]
)
print(response.choices[0].message.content)

Сведения о заинтересованных сторонах

Сведения о заинтересованных сторонах сообщают модели, кто ещё важен в Вашей ситуации. Заинтересованные стороны определяют, какие риски следует выделить, какие возражения рассмотреть и как выглядит успех.

  • «В мою аудиторию входит CFO, скептически относящийся к инвестициям в ИИ»
  • «Перед публикацией это проверит наша юридическая команда»
  • «Конечный пользователь нуждается в специальных возможностях — необходима совместимость с программами чтения с экрана»
  • «Наш CTO предпочитает простые решения изобретательным»
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

stakeholder_context = (
    'This proposal will be reviewed by:\n'
    '1. CTO: cares about technical risk and maintainability, skeptical of microservices\n'
    '2. CFO: cares about cost, wants to see clear ROI numbers\n'
    '3. VP Engineering: cares about developer experience and team morale\n'
    'The CTO has veto power.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            f'{stakeholder_context}\n\n'
            f'Write a 3-paragraph executive summary for a proposal to migrate '
            f'our monolith to a modular monolith (not microservices). '
            f'Address each stakeholder\'s top concern in a separate paragraph.'
        )
    }]
)
print(response.content[0].text)

Хронологический метод

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

Формат:

  • Каким было положение дел раньше
  • Что изменилось или произошло
  • Каково текущее состояние
  • С чем Вам нужна помощь с учётом этой последовательности
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

chronological_background = (
    'Timeline:\n'
    '- 6 months ago: We launched v1 of our API with a flat pricing model ($99/month).\n'
    '- 3 months ago: Power users (top 10%) started consuming 80% of compute.\n'
    '- 1 month ago: We introduced usage-based pricing — power users complained loudly.\n'
    '- Current: 12% of power users have churned; new signups are up 15%.\n'
    '- Goal: Keep power users without losing the new-signup growth.\n'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            f'{chronological_background}\n\n'
            f'Suggest 3 pricing model adjustments that could address both groups. '
            f'For each: describe the change, who it benefits, and the revenue risk.'
        )
    }]
)
print(response.choices[0].message.content)

Использование собственных данных в качестве исходной информации

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

Всегда вставляйте данные в чистом и удобном для чтения формате. Лучше всего подходят таблицы и структурированные списки. Необработанные массивы текста модели труднее анализировать.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

metrics_data = (
    'Weekly active users (WAU) last 8 weeks:\n'
    'Week 1: 1,200  |  Week 2: 1,350  |  Week 3: 1,290  |  Week 4: 1,400\n'
    'Week 5: 1,380  |  Week 6: 1,220  |  Week 7: 1,100  |  Week 8: 980\n'
    'Note: We launched a pricing change in Week 5.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            f'{metrics_data}\n\n'
            f'Analyze the trend, identify where decline began, '
            f'and suggest 2 hypotheses for the cause. '
            f'Be specific — reference the exact weeks in your analysis.'
        )
    }]
)
print(response.content[0].text)

Что NOT следует включать в исходную информацию

Исходная информация имеет цену: расход токенов. Включайте только то, что напрямую влияет на ответ.

Как правило, ненужная исходная информация:

  • История создания компании (если не важен стиль бренда)
  • Организационная структура команды (если важны полномочия по принятию решений)
  • Исторический контекст, относящийся к периоду, предшествующему принятию решения
  • Технологии, которые Вы NOT используете
  • Уже решённые проблемы, не связанные с текущим вопросом

Если сомневаетесь, включите это один раз, проверьте, улучшился ли результат, а при последующих запусках сократите объём.

# Contrast: bloated vs lean background
bloated_background = (
    'Our company was founded in 2018 by Alice and Bob. '
    'We have 45 employees across 3 offices. We use Jira for project management. '
    'We had a product refresh in 2020. Our CTO came from Amazon. '
    'We use Slack, Notion, and Linear. '
    'We once tried Kubernetes but moved back to Docker Compose. '
    'Question: How should we handle database connection pooling in FastAPI?'
)

lean_background = (
    'Stack: FastAPI, PostgreSQL, deployed on a single 8-core server. '
    'Load: ~200 concurrent users peak. '
    'Current issue: seeing "too many connections" errors under load. '
    'Question: How should we handle database connection pooling?'
)

print('Bloated background:', len(bloated_background.split()), 'words')
print('Lean background:', len(lean_background.split()), 'words')
print('Reduction:', round((1 - len(lean_background.split())/len(bloated_background.split()))*100), '%')

Форматирование исходной информации для удобства чтения

Формат исходной информации влияет на то, насколько хорошо модель её обрабатывает. Рекомендуемые приёмы:

  • Используйте обозначенные разделы: Stack:, Constraints:, Goal:
  • Используйте маркированные списки для однородных пунктов
  • Размещайте самую важную информацию в начале
  • Отделяйте исходную информацию от задачи пустой строкой или понятным маркером
  • Используйте единообразную терминологию — не называйте одно и то же двумя разными именами
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Well-formatted background
formatted_background = (
    '=== BACKGROUND ===\n'
    'Project: real-time chat API\n'
    'Stack: Python FastAPI, WebSockets, Redis pub/sub, PostgreSQL\n'
    'Scale: 10,000 concurrent connections target\n'
    'Constraints: single server for now, no Kubernetes\n'
    'Current problem: messages are occasionally delivered out of order\n'
    '=== TASK ===\n'
    'Explain the root cause of out-of-order message delivery in WebSocket pub/sub '
    'and suggest the simplest fix for our stack.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': formatted_background}]
)
print(response.choices[0].message.content)

Повторно используемая исходная информация в системном сообщении

Если Вы создаёте приложение на основе ИИ и одна и та же исходная информация относится ко всем разговорам, поместите её в системное сообщение, а не повторяйте в каждом сообщении пользователя.

Это эффективнее и обеспечивает единообразный контекст во всех взаимодействиях, не заставляя пользователя повторять эти сведения.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# System message carries reusable background for every user turn
system_background = (
    'You are an AI assistant embedded in Northlight Labs\' internal developer portal. '
    'Background: our stack is Python 3.11, FastAPI, PostgreSQL 15, Redis 7, Docker. '
    'We follow Google Python style guide. All code examples must include type hints. '
    'We do not use ORM — raw SQL with psycopg3. '
    'Our API follows REST conventions with snake_case JSON fields.'
)

# Now every user turn gets this background automatically
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    system=system_background,
    messages=[
        {'role': 'user', 'content': 'Show me how to insert a row into the users table.'}
    ]
)
print(response.content[0].text)

Проверка знаний

Менеджер продукта хочет получить помощь ИИ при написании письма с анонсом новой функции. Он указывает год основания компании, число сотрудников, местоположение офисов, а затем формулирует задачу. Какой тип исходной информации отсутствует и сильнее всего улучшил бы результат?

Предоставление исходной информации — итоги

Хорошая исходная информация отличает общие советы от советов, действительно подходящих для Вашей ситуации. Основные принципы:

  • Включайте знания предметной области, влияющие на правильный ответ в Вашей сфере
  • Предоставляйте сведения о проекте: стек, этап, размер команды, недавние изменения
  • Включайте уже выполненную работу, если Вам нужно продолжение или согласование стиля
  • Заранее указывайте ограничения, чтобы модель не предлагала бесполезные варианты
  • Включайте сведения о заинтересованных сторонах, чтобы модель учитывала правильные аспекты
  • Используйте хронологический метод для сложного ситуационного контекста
  • Делайте исходную информацию лаконичной — включайте только то, что влияет на ответ

Часто задаваемые вопросы

Урок «Предоставление исходной информации» бесплатный?

Да — полный текст урока «Предоставление исходной информации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.

Чему я научусь в уроке «Предоставление исходной информации»?

Когда и как включать предметные знания, ограничения и сведения о проекте Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Prompt Engineering?

Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Предоставление исходной информации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Prompt Engineering?

Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что означает контекст при составлении запросов к искусственному интеллекту
  2. Предоставление исходной информации
  3. Эффективная постановка контекста
  4. Объём и релевантность контекста
← Назад к AI Prompt Engineering