Files
MultiAgent/agent/planner.py
2026-04-12 11:48:37 +05:00

41 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# planner.py
from langchain_ollama import ChatOllama
from langchain_core.messages import SystemMessage, HumanMessage
import json
from typing import List, Dict
from config import MODEL_NAME, LLM_HOST
class PlannerAgent:
def __init__(self, llm=None):
self.llm = llm or ChatOllama(
model=MODEL_NAME,
temperature=0.0,
base_url=LLM_HOST
)
def create_plan(self, task: str, tools_description: List[Dict]) -> List[Dict]:
system_prompt = """Ты - планировщик. Твоя задача - разбить запрос пользователя на последовательность шагов.
Каждый шаг - это вызов одного из доступных инструментов с конкретными аргументами.
Верни JSON массив шагов, где каждый шаг содержит:
- "tool": имя инструмента (строго из списка)
- "args": словарь аргументов для этого инструмента
- "description": краткое пояснение, зачем этот шаг
Инструменты и их аргументы:
{tools_description}
План должен быть линейным (шаг за шагом). Если нужны условия или циклы - разворачивай их в последовательность.
После выполнения всех шагов задача должна быть решена.
Верни ТОЛЬКО JSON массив, без лишнего текста."""
user_prompt = f"Задача: {task}"
tools_str = json.dumps(tools_description, indent=2)
messages = [
SystemMessage(content=system_prompt.format(tools_description=tools_str)),
HumanMessage(content=user_prompt)
]
response = self.llm.invoke(messages)
# парсим JSON
plan = json.loads(response.content)
return plan