Оптимизация модуля LLM: Детализация структуры и формата
В данной статье рассматриваются ключевые аспекты структурирования промптов для генерации кода с использованием LLM, с акцентом на PHP-фреймворк Kohana 3.3.
Структура Промпта
Для обеспечения предсказуемости и управляемости ответов LLM необходимо использовать структурированный промпт, который включает:
- Системная инструкция / Роль: Задает роль LLM
- Контекст / Описание задачи: Конкретное описание задачи
- Типы кода для генерации: Четкие инструкции по каждому типу
- Входные данные: Информация о сущности
- Формат вывода: Структура ответа для парсинга
- Примеры: Few-shot learning для улучшения качества
Формат Ответа LLM
JSON является предпочтительным форматом ответа, поскольку он:
- Упрощает парсинг кода
- Устойчив к изменениям форматирования
- Обеспечивает структуру для извлечения компонентов
{
"generated_code": {
"sql_migration": "...",
"model": "...",
"controller": "...",
"view_list": "...",
"view_view": "..."
},
"status": "success",
"message": "Entity 'Product' generated successfully."
}
Пример Промпта для сущности "Product"
You are an expert PHP developer specializing in the Kohana 3.3 framework. Your task is to generate code for a new entity within a Kohana ERP system. Generate the following components: a SQL migration script, an ORM model, a basic controller with index and view actions, and corresponding view files for listing and viewing a single item.
## Задача: Генерация сущности "Product" для ERP-системы.
## Требования к генерации:
**sql_migration**: SQL-скрипт для создания таблицы. Используйте MySQL синтаксис. Следуйте определенным типам полей, nullable, primary_key, auto_increment и default атрибутам.
**model**: ORM модель Kohana 3.3 для сгенерированной таблицы. Укажите `$_table_name` и, если применимо, `$_primary_key`. Добавьте комментарии для возможных связей.
**controller**: Базовый Kohana 3.3 контроллер с действиями `action_index` (список) и `action_view` (детали). Используйте ORM для получения данных. Обработайте случай, когда запись не найдена (HTTP_Exception_404). Предполагайте использование `Controller_Template`.
**view_list**: Kohana 3.3 представление для отображения списка сущностей. Покажите основные поля (например, name) и ссылку на детальное представление (если есть id).
**view_view**: Kohana 3.3 представление для отображения одной сущности. Покажите все поля, используйте HTML::chars для безопасности.
## Входные данные сущности:
{"entity_name": "Product", "fields": [{"name": "id", "type": "INT", "primary_key": true, "auto_increment": true}, {"name": "name", "type": "VARCHAR(255)", "nullable": false}, {"name": "description", "type": "TEXT", "nullable": true}, {"name": "price", "type": "DECIMAL(10, 2)", "nullable": false, "default": "0.00"}]}
## Формат вывода:
В ответе должен быть строго JSON объект. Объект верхнего уровня должен содержать ключи "generated_code", "status", и "message".
Ключ "generated_code" должен быть объектом, содержащим сгенерированный код для каждого запрошенного типа. Используйте следующие ключи для кода: "sql_migration", "model", "controller", "view_list", "view_view".
Значения для каждого ключа кода должны быть строками, содержащими полный код.
Status должен быть "success" при успешной генерации или "error" при неудаче.
Message должен содержать краткое описание результата.
TYPE_MAP
TYPE_MAP сопоставляет внутренние ключи с инструкциями для LLM:
Структура payload
Payload содержит всю необходимую информацию для построения промпта:
Итог
Мы определили ключевые компоненты для работы с LLM:
- Структуру промпта с системной инструкцией, описанием задачи, требованиями к генерации, входными данными и форматом вывода
- Формат ответа LLM, который будет строго JSON
- Пример промпта для таблицы products
- TYPE_MAP для сопоставления типов кода с инструкциями
- Структуру payload, передаваемого в generate()
Теперь мы готовы к реализации LLM_Service и его методов, а также к разработке парсинга JSON-ответа и безопасного выполнения SQL.