Создание самооценивающейся системы агентского ИИ с помощью LlamaIndex и OpenAI

В этом руководстве мы рассмотрим, как создать продвинутый агентский рабочий процесс ИИ, используя модели LlamaIndex и OpenAI. Основное внимание будет уделено разработке надёжного агента, дополненного поиском (RAG), который может работать с доказательствами, осознанно использовать инструменты и оценивать качество своих результатов.

Установка среды и зависимостей

Для начала установим все необходимые зависимости для запуска агентского рабочего процесса ИИ. Мы безопасно загрузим ключ API OpenAI во время выполнения, гарантируя, что учётные данные никогда не будут жёстко закодированы. Также подготовим блокнот для плавного асинхронного выполнения.

«`python
!pip -q install -U llama-index llama-index-llms-openai llama-index-embeddings-openai nest_asyncio

import os
import asyncio
import nest_asyncio
nest_asyncio.apply()

from getpass import getpass

if not os.environ.get(«OPENAIAPIKEY»):
os.environ[«OPENAIAPIKEY»] = getpass(«Enter OPENAIAPIKEY: «)
«`

Настройка моделей и создание базы знаний

Мы настроим языковую модель OpenAI и модель встраивания и создадим компактную базу знаний для нашего агента. Преобразуем необработанный текст в индексированные документы, чтобы агент мог извлекать соответствующие доказательства во время рассуждений.

«`python
from llama_index.core import Document, VectorStoreIndex, Settings
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding

Settings.llm = OpenAI(model=»gpt-4o-mini», temperature=0.2)
Settings.embed_model = OpenAIEmbedding(model=»text-embedding-3-small»)

texts = [
«Надёжные системы RAG разделяют извлечение, синтез и проверку. Распространённые сбои включают галлюцинации и поверхностное извлечение.»,
«Оценка RAG фокусируется на достоверности, релевантности ответов и качестве извлечения.»,
«Агенты, использующие инструменты, требуют ограниченных инструментов, валидации и циклов самопроверки.»,
«Устойчивый рабочий процесс включает этапы извлечения, ответа, оценки и доработки.»
]

docs = [Document(text=t) for t in texts]
index = VectorStoreIndex.from_documents(docs)
queryengine = index.asqueryengine(similaritytop_k=4)
«`

Определение инструментов агента

Мы определим основные инструменты, используемые агентом: извлечение доказательств и оценка ответов. Реализуем автоматическую оценку достоверности и релевантности, чтобы агент мог судить о качестве своих ответов.

«`python
from llama_index.core.evaluation import FaithfulnessEvaluator, RelevancyEvaluator

faith_eval = FaithfulnessEvaluator(llm=Settings.llm)
rel_eval = RelevancyEvaluator(llm=Settings.llm)

def retrieve_evidence(q: str) -> str:
r = query_engine.query(q)
out = []
for i, n in enumerate(r.source_nodes or []):
out.append(f»[{i+1}] {n.node.get_content()[:300]}»)
return «\n».join(out)

def score_answer(q: str, a: str) -> str:
r = query_engine.query(q)
ctx = [n.node.getcontent() for n in r.sourcenodes or []]
f = faith_eval.evaluate(query=q, response=a, contexts=ctx)
r = rel_eval.evaluate(query=q, response=a, contexts=ctx)
return f»Достоверность: {f.score}\nРелевантность: {r.score}»
«`

Создание агентского рабочего процесса

Создадим агентский рабочий процесс на основе ReAct и определим его системное поведение, управляющее извлечением доказательств, генерацией ответов и пересмотром результатов.

«`python
from llama_index.core.agent.workflow import ReActAgent
from llama_index.core.workflow import Context

agent = ReActAgent(
tools=[retrieveevidence, scoreanswer],
llm=Settings.llm,
system_prompt=»»»
Всегда сначала извлекайте доказательства.
Сформируйте структурированный ответ.
Оцените ответ и пересмотрите его один раз, если оценки низкие.
«»»,
verbose=True
)

ctx = Context(agent)
«`

Запуск агентского рабочего процесса

Запустим агентский рабочий процесс, передав тему в систему и потоково обрабатывая рассуждения агента и его выходные данные.

«`python
async def run_brief(topic: str):
q = f»Разработайте надёжный рабочий процесс RAG + использование инструментов и способы его оценки. Тема: {topic}»
handler = agent.run(q, ctx=ctx)
async for ev in handler.stream_events():
print(getattr(ev, «delta», «»), end=»»)
res = await handler
return str(res)

topic = «Надёжность и оценка RAG-агента»
loop = asyncio.geteventloop()
result = loop.rununtilcomplete(run_brief(topic))

print(«\n\nКОНЕЧНЫЙ РЕЗУЛЬТАТ\n»)
print(result)
«`

В заключение мы продемонстрировали, как агент может извлекать подтверждающие доказательства, генерировать структурированный ответ и оценивать свою достоверность и релевантность перед окончательным оформлением ответа. Мы сделали дизайн модульным и прозрачным, что упрощает расширение рабочего процесса дополнительными инструментами, оценщиками или источниками знаний для конкретных предметных областей.

Этот подход иллюстрирует, как можно использовать агентский ИИ с моделями LlamaIndex и OpenAI для создания более совершенных систем, которые также более надёжны и осознают себя в своих рассуждениях и ответах.

1. Какие инструменты используются для создания самооценивающейся системы агентского ИИ в данной статье?

В статье используются инструменты извлечения доказательств и оценки ответов. Для автоматической оценки достоверности и релевантности ответов применяются `FaithfulnessEvaluator` и `RelevancyEvaluator` соответственно.

2. Как в данной статье обеспечивается надёжность системы агентского ИИ?

Надёжность системы агентского ИИ обеспечивается за счёт разделения этапов извлечения, синтеза и проверки. Также используются механизмы самопроверки и пересмотра результатов на основе оценок достоверности и релевантности ответов.

3. Какие модели используются для создания продвинутого агентского рабочего процесса ИИ в данной статье?

Для создания продвинутого агентского рабочего процесса ИИ в статье используются модели LlamaIndex и OpenAI. Модель LlamaIndex применяется для настройки рабочего процесса, а модель OpenAI используется для языковых моделей и моделей встраивания.

4. Какие этапы включает в себя устойчивый рабочий процесс, описанный в статье?

Устойчивый рабочий процесс включает этапы извлечения, ответа, оценки и доработки. Это обеспечивает систематический подход к созданию надёжных и осознанных ответов агентского ИИ.

5. Как в данной статье реализуется автоматическая оценка достоверности и релевантности ответов?

Автоматическая оценка достоверности и релевантности ответов реализуется с помощью `FaithfulnessEvaluator` и `RelevancyEvaluator`. Эти инструменты оценивают соответствие ответа запросу и контексту, предоставляя численные оценки для каждого параметра.

Источник