Как создать надежных разговорных ИИ-агентов с помощью Parlant?
Создание надежных разговорных ИИ-агентов может показаться сложной задачей. Однако с помощью Parlant, фреймворка, разработанного для упрощения создания готовых к производству ИИ-агентов, вы сможете преодолеть распространенные проблемы, связанные с большими языковыми моделями (LLM).
Проблемы, с которыми сталкиваются LLM
Хотя LLM часто демонстрируют хорошие результаты в тестах, они могут не справляться с реальными взаимодействиями с пользователями. Основные проблемы включают:
- Игнорирование системных подсказок
- Генерация неточных или нерелевантных ответов
- Сложности с крайними случаями
- Непоследовательное поведение в разных разговорах
Как Parlant решает эти проблемы?
Parlant акцентирует внимание на принципиально ориентированном развитии, а не на инженерии подсказок. Он предлагает механизмы для определения четких правил и интеграции инструментов, что позволяет агентам безопасно и предсказуемо обрабатывать данные из реального мира.
Практическое применение: создание страхового агента
В этом руководстве мы создадим страхового агента, который сможет извлекать открытые заявки, подавать новые заявки и предоставлять подробную информацию о полисах. Это демонстрирует, как интегрировать специализированные инструменты в систему ИИ на базе Parlant для обеспечения последовательной и надежной поддержки клиентов.
Установка и импорт зависимостей
pip install parlant
Для использования Parlant в вашем проекте импортируйте необходимые библиотеки:
import asyncio
from datetime import datetime
import parlant.sdk as p
Определение инструментов
Следующие инструменты имитируют взаимодействия, которые могут потребоваться страховой помощник:
@p.tool
async def get_open_claims(context: p.ToolContext) -> p.ToolResult:
return p.ToolResult(data=["Заявка #123 - В ожидании", "Заявка #456 - Одобрена"])
@p.tool
async def file_claim(context: p.ToolContext, claim_details: str) -> p.ToolResult:
return p.ToolResult(data=f"Новая заявка подана: {claim_details}")
@p.tool
async def get_policy_details(context: p.ToolContext) -> p.ToolResult:
return p.ToolResult(data={
"номер полиса": "POL-7788",
"покрытие": "Покрывает случайные повреждения и кражу до $50,000"
})
Определение глоссария и маршрутов
Этот раздел устанавливает глоссарий и маршруты, которые определяют, как агент взаимодействует с предметной областью и взаимодействиями. Глоссарий включает важные бизнес-термины, что обеспечивает точную ссылку во время разговоров.
async def add_domain_glossary(agent: p.Agent):
await agent.create_term(
name="Номер службы поддержки",
description="Вы можете связаться с нами по номеру +1-555-INSURE",
)
await agent.create_term(
name="Часы работы",
description="Мы доступны с понедельника по пятницу с 9:00 до 18:00",
)
Создание маршрута для подачи заявки
async def create_claim_journey(agent: p.Agent) -> p.Journey:
journey = await agent.create_journey(
title="Подача страховой заявки",
description="Помогает клиентам сообщать и подавать новую заявку.",
conditions=["Клиент хочет подать заявку"],
)
s0 = await journey.initial_state.transition_to(chat_state="Запросить детали происшествия")
s1 = await s0.target.transition_to(tool_state=file_claim, condition="Клиент предоставляет детали")
s2 = await s1.target.transition_to(chat_state="Подтвердить, что заявка была подана")
await s2.target.transition_to(state=p.END_JOURNEY)
return journey
Создание маршрута для объяснения полиса
async def create_policy_journey(agent: p.Agent) -> p.Journey:
journey = await agent.create_journey(
title="Объяснение покрытия полиса",
description="Извлекает и объясняет покрытие страховки клиента.",
conditions=["Клиент спрашивает о своем полисе"],
)
s0 = await journey.initial_state.transition_to(tool_state=get_policy_details)
await s0.target.transition_to(
chat_state="Четко объяснить покрытие полиса",
condition="Информация о полисе доступна",
)
await agent.create_guideline(
condition="Клиент настаивает на юридической интерпретации покрытия",
action="Вежливо объяснить, что юридические советы предоставить нельзя",
)
return journey
Определение основного запуска
Основной запуск соединяет все ранее определенные компоненты и запускает агента. Он запускает сервер Parlant, создает страхового агента и загружает его глоссарий, маршруты и глобальные рекомендации. Он также управляет крайними случаями, такими как неоднозначные намерения клиента:
async def main():
async with p.Server() as server:
agent = await server.create_agent(
name="Страховой помощник",
description="Дружелюбный и профессиональный; помогает с заявками и вопросами по полисам.",
)
await add_domain_glossary(agent)
claim_journey = await create_claim_journey(agent)
policy_journey = await create_policy_journey(agent)
status_obs = await agent.create_observation(
"Клиент упоминает о проблеме, но не уточняет, касается ли это заявки или полиса"
)
await status_obs.disambiguate([claim_journey, policy_journey])
await agent.create_guideline(
condition="Клиент спрашивает о нерелевантных темах",
action="Вежливо перенаправить их только на поддержку, связанную со страховкой",
)
print("Страховой агент готов! Откройте интерфейс Parlant для общения.")
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Ресурсы для дальнейшего изучения
Для получения полных деталей по коду посетите нашу страницу на GitHub для руководств, кода и блокнотов. Оставайтесь в курсе, подписавшись на нашу рассылку или следя за нами в Twitter.
Часто задаваемые вопросы (FAQ)
1. Каковы основные преимущества использования Parlant для создания ИИ-агентов?
Parlant упрощает разработку, обеспечивая надежность и предсказуемость взаимодействий, что критично для бизнеса.
2. Как Parlant справляется с неоднозначностью в запросах пользователей?
Parlant позволяет создавать наблюдения и рекомендации, которые помогают агенту правильно интерпретировать намерения клиентов.
3. Можно ли интегрировать Parlant с другими системами?
Да, Parlant поддерживает интеграцию с различными API и инструментами, что расширяет его функциональность.
4. Какие ошибки чаще всего совершают при разработке ИИ-агентов?
Частые ошибки включают игнорирование контекста, недостаточную проработку глоссария и отсутствие четких маршрутов взаимодействия.
5. Как улучшить взаимодействие с клиентами через ИИ-агента?
Регулярно обновляйте глоссарий и маршруты, учитывайте отзывы клиентов и адаптируйте агента под их потребности.
6. Какие лайфхаки можно использовать при работе с Parlant?
Используйте тестирование на ранних этапах разработки, чтобы выявить и устранить проблемы, и не забывайте о постоянной оптимизации взаимодействий.