<НА ГЛАВНУЮ

Проектирование самоисправляющейся AI системы на основе Gemini

Изучите структуру самоисправляющейся AI системы с использованием Gemini и семантической маршрутизации.

Обзор AI Оркестрации

В этом руководстве мы исследуем, как проектировать и запускать полипредставленную AI оркестрацию, используя семантическую маршрутизацию, символические охранные механизмы и петли самокоррекции на основе Gemini.

Структурирование агентов и распределение задач

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

Настройка основной среды

import os
import json
import time
import typing
from dataclasses import dataclass, asdict
from google import genai
from google.genai import types
 
API_KEY = os.environ.get("GEMINI_API_KEY", "API Key")
client = genai.Client(api_key=API_KEY)
 
@dataclass
class AgentMessage:
   source: str
   target: str
   content: str
   metadata: dict
   timestamp: float = time.time()

Мы настраиваем основную среду, импортируя необходимые библиотеки, определяя API-ключ и инициализируя клиент Gemini. Устанавливаем структуру AgentMessage, которая служит общим форматом общения между агентами.

Реализация когнитивного движка

class CognitiveEngine:
   @staticmethod
   def generate(prompt: str, system_instruction: str, json_mode: bool = False) -> str:
       config = types.GenerateContentConfig(
           temperature=0.1,
           response_mime_type="application/json" if json_mode else "text/plain"
       )
       try:
           response = client.models.generate_content(
               model="gemini-2.0-flash",
               contents=prompt,
               config=config
           )
           return response.text
       except Exception as e:
           raise ConnectionError(f"Gemini API Error: {e}")

Мы строим когнитивный уровень, используя Gemini, что позволяет генерировать как текстовые, так и JSON-выводы в зависимости от инструкции.

Семантическая маршрутизация: анализ запросов

class SemanticRouter:
   def __init__(self, agents_registry: dict):
       self.registry = agents_registry
 
   def route(self, user_query: str) -> str:
       prompt = f"""
       Вы - главный диспетчер. Проанализируйте запрос пользователя и сопоставьте его с одним лучшим агентом.
       ДОСТУПНЫЕ АГЕНТЫ:
       {json.dumps(self.registry, indent=2)}
       ЗАПРОС ПОЛЬЗОВАТЕЛЯ: "{user_query}"
       Верните ТОЛЬКО JSON-объект: {{"selected_agent": "agent_name", "reasoning": "brief reason"}}
       """
       response_text = CognitiveEngine.generate(prompt, "Вы - система маршрутизации.", json_mode=True)
       try:
           decision = json.loads(response_text)
           print(f"   [Router] Selected: {decision['selected_agent']} (Reason: {decision['reasoning']})")
           return decision['selected_agent']
       except:
           return "general_agent"

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

Создание рабочих агентов

class Agent:
   def __init__(self, name: str, instruction: str):
       self.name = name
       self.instruction = instruction
 
   def execute(self, message: AgentMessage) -> str:
       return CognitiveEngine.generate(
           prompt=f"Input: {message.content}",
           system_instruction=self.instruction
       )

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

Проверка ограничений и самокоррекция

def validate_constraint(self, content: str, constraint_type: str) -> tuple[bool, str]:
   if constraint_type == "json_only":
       try:
           json.loads(content)
           return True, "Valid JSON"
       except:
           return False, "Output was not valid JSON."
   if constraint_type == "no_markdown":
       if "```" in content:
           return False, "Вывод содержит блоки кода Markdown, что запрещено."
       return True, "Valid Text"
   return True, "Pass"

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

Исполнение сценариев

if __name__ == "__main__":
   orchestrator = Orchestrator()
   orchestrator.run_task(
       "Сравните ВВП Франции и Германии в 2023 году.",
       constraint="json_only"
   )
   orchestrator.run_task(
       "Напишите функцию Python для чисел Фибоначчи.",
       constraint="no_markdown"
   )

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

Заключение

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

🇬🇧

Switch Language

Read this article in English

Switch to English