Предоставление исходной информации
Когда и как включать предметные знания, ограничения и сведения о проекте
«Предоставление исходной информации» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Что означает контекст при составлении запросов к искусственному интеллекту
- Предоставление исходной информации
- Эффективная постановка контекста
- Объём и релевантность контекста