Промпт для медицинских записей
Построение промпта для суммаризации медкарт пациентов: от наивного первого варианта до продакшн-решения с системным промптом, XML-структурой, примером и JSON-выводом.
Задача
Суммаризировать длинные медицинские карты пациентов для врачей перед приёмом. Каждое резюме должно включать: имя, возраст, ключевые диагнозы, медикаменты, другие методы лечения, текущие жалобы, action items.
Наивный промпт (плохой)
initial_prompt = """
I have this patient medical record. Can you summarize it for me?
{record}
I need this for a quick review before the patient's appointment tomorrow.
"""
Проблема: Claude даёт разные форматы — где-то пространные абзацы, где-то списки. Несовместимо с программной обработкой.
Улучшенный промпт
system = """
You are a highly experienced medical professional with a specialty
in translating complex patient histories into concise, actionable summaries.
Your role is to analyze patient records, identify critical information,
and present it in a clear, structured format that aids in diagnosis
and treatment planning.
"""
updated_prompt = """
I need your help summarizing patient medical records for our team of doctors.
Each summary should include the following elements in this order:
- The patient's name and age
- A bulleted list of key diagnoses in chronological order
- A bulleted list of medications the patient is prescribed
- A bulleted list of other treatments (CBT, physical therapy, etc.)
- A short bulleted list of recent concerns
- A bulleted list of key action items for the doctor
<example>
<patient_record>Patient Name: Ethan Blackwood, Age: 55...</patient_record>
<summary>
Name: Ethan Blackwood
Age: 55
Key Diagnoses:
- Hypertension (2010)
...
</summary>
</example>
<patient_record>
{record}
</patient_record>
"""
JSON-версия для программной обработки
response = client.messages.create(
model="claude-3-sonnet-20240229",
max_tokens=4096,
system=system,
messages=[{"role": "user", "content": complete_prompt}]
)
import json
summary_data = json.loads(response.content[0].text)
action_items = summary_data.get("action_items", [])
Запрос JSON-структуры с полями name, age, key_diagnoses, medications, recent_concerns, action_items позволяет автоматически собирать дневной список задач врача по всем пациентам.
Напишите промпт для суммаризации медкарты. Начните с наивного варианта, зафиксируйте непоследовательность вывода, затем добавьте системный промпт с ролью врача, XML-теги для данных, пример разметки и требование JSON. Сравните результаты на трёх разных «пациентах».
Скопируйте и адаптируйте под свой контекст. Текст в треугольных скобках — то, что нужно заменить.
You are a highly experienced medical professional specializing in concise patient summaries.
I need help summarizing patient medical records before tomorrow's appointments.
<example>
<patient_record>Patient Name: [Example], Age: [N]
Medical Record: [history]</patient_record>
<summary>
Name: [Example] | Age: [N]
Key Diagnoses: - [Diagnosis (Year)]
Medications: - [Drug — purpose]
Recent Concerns: - [concern]
Action Items: - [action]
</summary>
</example>
<patient_record>
{{MEDICAL_RECORD}}
</patient_record>
Generate the summary inside <summary> tags.Не указывать точный формат секций — Claude будет варьировать структуру. Забывать просить хронологический порядок диагнозов. Не добавлять пример — без него вывод нестабилен. При JSON-режиме не проверять, что Claude не добавляет текст до/после JSON.
Для принудительного JSON-вывода используйте tool use (structured outputs) вместо текстового запроса — это надёжнее. Тег <summary> в примере автоматически обучает Claude оборачивать вывод — легко парсить с regex без JSON.
Обработка структурированных входных документов с требованием консистентного вывода: медкарты, юридические дела, отчёты по инцидентам.
Когда врачи хотят видеть полный нарратив без форматирования — структура может скрыть клинически важные нюансы.