Комментарии 6
Полезная библиотека для питона позволяет исправлять не совсем корректные джейсоны от ллм https://github.com/mangiucugna/json_repair/
Стойте. Но ведь в формате ОпенАИ (и всех совместимых БЯМ, а их большинство) уже есть инструмент для этого. Называется function calling.
Для примера мы хотим получить имя и возраст пользователя из свободного текста типа "меня зовут vmkazakoff, мне 40 лет и я мамкин программист", выбрав только нужное и убрав все лишнее. Причем в json.
Делаем примерно так:
tools = [
{
"type": "function",
"function": {
"name": "extract_user_info",
"description": "Извлекает имя и возраст пользователя из текста",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Имя пользователя"
},
"age": {
"type": "number",
"description": "Возраст пользователя"
}
},
"required": ["name", "age"]
}
}
}
]
И затем вызываем
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Меня зовут Иван, мне 30 лет"}],
tools=tools,
tool_choice={"type": "function", "function": {"name": "extract_user_info"}}
)
В ответ всегда будет только валидный json.
Код писал дипсик, с телефона не проверял, но выглядит верно.
Свежая разработка от Guidance https://github.com/guidance-ai/llguidance на rust
Заявлена высокая скорость. Поддержка Lark грамматики и тд
Разработчики OpenAI API недавно добавили в structured outputs. Появилась поддержка параллельного function calling в strict режиме

А вот такое видел/пробовал кто-нибудь?
Nice
Структурированная генерация в LLM