Files
ai-agent-admin/backend/app/services/collaboration.py
2026-06-08 15:05:57 +08:00

40 lines
1.5 KiB
Python

import time
from sqlalchemy.ext.asyncio import AsyncSession
from app.models import Agent, AgentTeam, CollaborationRun
from app.services.llm import LLMService
class CollaborationService:
def __init__(self, db: AsyncSession):
self.db = db
self.llm = LLMService(db)
async def run(self, team: AgentTeam, task: str) -> CollaborationRun:
started = time.time()
run = CollaborationRun(team_id=team.id, task=task, status="running", messages=[], final_answer="")
self.db.add(run)
await self.db.flush()
messages = []
context = task
for member in team.members or []:
agent_id = member.get("agent_id")
role = member.get("role", "member")
agent = await self.db.get(Agent, agent_id) if agent_id else None
if not agent:
content = f"{role}: 未配置有效智能体,跳过。"
else:
content = await self.llm.complete(agent, f"你的协作角色是 {role}。请基于上下文完成任务:{context}")
messages.append({"role": role, "agent_id": agent_id, "agent_name": agent.name if agent else "", "content": content})
context = f"{context}\n\n[{role}] {content}"
run.messages = messages
run.final_answer = messages[-1]["content"] if messages else "团队暂无成员,无法执行协作任务。"
run.status = "completed"
run.elapsed_time = int((time.time() - started) * 1000)
await self.db.commit()
await self.db.refresh(run)
return run