Merge branch '#9-интеграция-composIO'
This commit is contained in:
commit
5c3f63b039
6 changed files with 104 additions and 5 deletions
|
|
@ -1,8 +1,9 @@
|
|||
import os
|
||||
|
||||
from deepagents import create_deep_agent
|
||||
from langchain_openai import ChatOpenAI
|
||||
from langgraph.checkpoint.memory import MemorySaver
|
||||
from composio import Composio
|
||||
from composio_langchain import LangchainProvider
|
||||
|
||||
from src.agent.backends import IsolatedShellBackend
|
||||
from src.agent.tools import send_file
|
||||
|
|
@ -15,6 +16,11 @@ def create_agent():
|
|||
api_key=os.environ["PROVIDER_API_KEY"],
|
||||
)
|
||||
|
||||
composio_user_id = os.environ["AGENT_ID"]
|
||||
composio = Composio(provider=LangchainProvider())
|
||||
session = composio.create(user_id=composio_user_id)
|
||||
tools = session.tools()
|
||||
|
||||
workspace_dir = os.environ["WORKSPACE_DIR"]
|
||||
agent_user = os.environ.get("AGENT_USER", "agent")
|
||||
|
||||
|
|
@ -26,8 +32,8 @@ def create_agent():
|
|||
|
||||
return create_deep_agent(
|
||||
model=model,
|
||||
tools=[send_file],
|
||||
system_prompt="You are a helpful assistant.",
|
||||
system_prompt="You are a helpful assistant. Use Composio tools to take action when needed.",
|
||||
checkpointer=MemorySaver(),
|
||||
tools=tools + [send_file],
|
||||
backend=backend,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -114,8 +114,16 @@ class AgentService:
|
|||
|
||||
# 2. Инструмент завершил работу и вернул результат
|
||||
elif kind == "on_tool_end":
|
||||
result = event["data"].get("output")
|
||||
|
||||
"""# Перехватываем ссылку на авторизацию Composio v3
|
||||
if result and "connect.composio.dev" in str(result):
|
||||
yield MsgEventTextChunk(
|
||||
text=f"\n⚠️ Для выполнения действия требуется авторизация. Перейдите по ссылке: {result}\n")
|
||||
else:"""
|
||||
yield MsgEventToolResult(
|
||||
tool_name=event["name"], result=event["data"].get("output")
|
||||
tool_name=event["name"],
|
||||
result=str(result) # Страховка от ошибки сериализации JSON
|
||||
)
|
||||
|
||||
# 3. Кастомные события (send_file и др.)
|
||||
|
|
|
|||
|
|
@ -45,4 +45,3 @@ async def process_message(ws: WebSocket, chat: AgentChat, msg):
|
|||
case MsgUserMessage():
|
||||
async for chunk in chat.astream(msg.text):
|
||||
await ws.send_text(chunk.model_dump_json())
|
||||
await ws.send_text(MsgEventEnd(tokens_used=0).model_dump_json())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue