Itinai.com it company office background blured photography by 83d4babd 14b1 46f9 81ea 8a75bac63327 0

Создание ReAct-агента: интеграция логики Пролога с Gemini и LangGraph

Itinai.com it company office background blured photography by 83d4babd 14b1 46f9 81ea 8a75bac63327 0

A Coding Guide to Build a Tool-Calling ReAct Agent Fusing Prolog Logic with Gemini and LangGraph

В современном мире автоматизации бизнеса искусственный интеллект (ИИ) становится неотъемлемой частью многих процессов. Одним из самых интересных направлений является интеграция символической логики с генеративным ИИ. В этой статье мы рассмотрим, как создать инструмент, который объединяет логику Пролога с Gemini и LangGraph, чтобы разработать мощного агента ReAct. Этот подход не только улучшает качество принятия решений, но и открывает новые горизонты для анализа данных.

Что такое ReAct агент?

ReAct агент — это система, способная выполнять сложные логические операции и взаимодействовать с пользователем на естественном языке. Используя возможности Пролога для обработки логических запросов, а также мощь генеративного ИИ, мы можем создать инструмент, который будет не только отвечать на вопросы, но и выполнять вычисления, анализировать данные и делать выводы.

Преимущества интеграции Пролога с Gemini и LangGraph

  • Символическая логика: Пролог позволяет формализовать знания и правила, что делает систему более предсказуемой и управляемой.
  • Генеративный ИИ: Gemini предоставляет возможности для обработки естественного языка, что делает взаимодействие с пользователем более интуитивным.
  • Гибкость: LangGraph позволяет легко интегрировать различные инструменты и библиотеки, что упрощает разработку.

Практическое применение

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

Установка необходимых библиотек

!apt-get install swi-prolog -y
!pip install pyswip langchain-google-genai langgraph langchain-core

Импорт библиотек и настройка окружения

import os
from pyswip import Prolog
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
import json

GOOGLE_API_KEY = "Ваш API ключ"
os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY

llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0)

Создание интерфейса для Пролога

Создадим класс, который будет взаимодействовать с базой знаний Пролога и выполнять запросы:

class AdvancedPrologInterface:
    def __init__(self):
        self.prolog = Prolog()
        self._load_knowledge_base()
    
    def _load_knowledge_base(self):
        """Загрузка базы знаний Пролога"""
        rules = [
            "parent(john, mary, alice)",
            "parent(john, mary, bob)",
            "parent(bob, susan, charlie)",
            "parent(alice, david, emma)",
            "parent(charlie, lisa, frank)",
            "male(john)", "male(bob)", "male(david)", "male(charlie)", "male(frank)",
            "female(mary)", "female(alice)", "female(susan)", "female(emma)", "female(lisa)",
            "grandparent(X, Z) :- parent(X, _, Y), parent(Y, _, Z)",
            "sibling(X, Y) :- parent(P1, P2, X), parent(P1, P2, Y), X \\= Y",
            "uncle(X, Y) :- sibling(X, Z), parent(Z, _, Y), male(X)",
            "aunt(X, Y) :- sibling(X, Z), parent(Z, _, Y), female(X)",
            "cousin(X, Y) :- parent(P1, _, X), parent(P2, _, Y), sibling(P1, P2)"
        ]
        
        for rule in rules:
            try:
                self.prolog.assertz(rule)
            except Exception as e:
                print(f"Предупреждение: Не удалось добавить правило '{rule}': {e}")
    
    def query(self, query_string):
        """Выполнение запроса к Прологу"""
        try:
            results = list(self.prolog.query(query_string))
            return results if results else [{"result": "Решения не найдены"}]
        except Exception as e:
            return [{"error": f"Запрос не удался: {str(e)}"}]

Создание инструментов для взаимодействия

Теперь мы определим несколько инструментов для работы с базой знаний:

@tool
def family_relationships(query: str) -> str:
    """Запрос семейных отношений в формате Пролога."""
    results = prolog_interface.query(query)
    return json.dumps(results, indent=2)

Создание агента ReAct

Теперь, когда у нас есть инструменты, мы можем создать агента ReAct:

tools = [family_relationships]
agent = create_react_agent(llm, tools)

Запуск анализа семейных отношений

Давайте протестируем нашего агента:

def run_family_analysis():
    """Анализ семейных отношений"""
    print("Анализ семейных отношений")
    print("=" * 50)
    
    queries = [
        "Кто все родители в базе данных семьи?",
        "Найдите все отношения бабушка-внук",
        "Покажите мне всех братьев и сестер в семье",
        "Кто дети Джона и Мэри?"
    ]
    
    for i, query in enumerate(queries, 1):
        print(f"\nЗапрос {i}: {query}")
        print("-" * 30)
        
        try:
            response = agent.invoke({"messages": [("human", query)]})
            answer = response["messages"][-1].content
            print(f"Ответ: {answer}")
        except Exception as e:
            print(f"Ошибка: {str(e)}")

Заключение

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

Часто задаваемые вопросы (FAQ)

  • Что такое Пролог и как он используется в ИИ? Пролог — это язык программирования, основанный на логике, который позволяет формализовать знания и правила.
  • Как интегрировать Пролог с другими языками программирования? Используйте библиотеки, такие как pyswip, для взаимодействия между Python и Прологом.
  • Какие преимущества дает использование генеративного ИИ? Генеративный ИИ позволяет обрабатывать естественный язык, что делает взаимодействие с пользователем более удобным.
  • Каковы лучшие практики при работе с Прологом? Убедитесь, что ваша база знаний хорошо структурирована и содержит все необходимые правила.
  • Что делать, если запрос к Прологу не удался? Проверьте синтаксис запроса и убедитесь, что все необходимые правила загружены в базу знаний.
  • Как улучшить производительность агента ReAct? Оптимизируйте базу знаний и используйте кэширование для часто запрашиваемых данных.

Теперь вы готовы начать создавать свои собственные инструменты, используя мощь Пролога и генеративного ИИ. Удачи в ваших разработках!

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн