Compare commits
2 commits
f87051e35b
...
5a7376f580
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a7376f580 | |||
| 2960c0b47c |
2 changed files with 71 additions and 52 deletions
|
|
@ -3,3 +3,6 @@ PROVIDER_API_KEY=your-api-key
|
|||
PROVIDER_MODEL=gpt-4
|
||||
COMPOSIO_API_KEY=your-api-key
|
||||
AGENT_ID=user-12345
|
||||
LANGFUSE_PUBLIC_KEY=pk-lf-...
|
||||
LANGFUSE_SECRET_KEY=sk-lf-...
|
||||
LANGFUSE_HOST=http://localhost:3000
|
||||
|
|
@ -2,7 +2,9 @@ from typing import AsyncIterator, AsyncContextManager, Self
|
|||
from abc import abstractmethod
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from langfuse import get_client, propagate_attributes,observe
|
||||
import langfuse
|
||||
from langfuse.langchain import CallbackHandler
|
||||
from src.agent.base import create_agent
|
||||
from src.core.logger import get_logger
|
||||
from lambda_agent_api.server import (
|
||||
|
|
@ -106,8 +108,18 @@ class AgentService:
|
|||
async def __astream(
|
||||
self, chat_id: int, text: str, attachments: list[str] = None
|
||||
) -> AsyncIterator[AgentEventUnion]:
|
||||
config = {"configurable": {"thread_id": chat_id}}
|
||||
|
||||
langfuse_client = get_client()
|
||||
langfuse_handler = CallbackHandler()
|
||||
config = {"configurable": {"thread_id": chat_id},"callbacks": [langfuse_handler]}
|
||||
|
||||
try:
|
||||
# возможно сюда стоит включить обработку attachmanets, только __describe_attachments нужно обернуть в @observe
|
||||
with propagate_attributes(
|
||||
session_id=str(chat_id),
|
||||
user_id=str(chat_id), # Или реальный ID юзера, если есть
|
||||
tags=["agent-stream"]
|
||||
):
|
||||
new_message = text
|
||||
if attachments:
|
||||
logger.debug(f"Processing {attachments} attachments for chat {chat_id}")
|
||||
|
|
@ -115,13 +127,13 @@ class AgentService:
|
|||
new_message += "\n" + attachments_description
|
||||
|
||||
logger.debug(f"Starting agent stream for chat {chat_id}")
|
||||
|
||||
# astream_events, чтобы выходили промежуточные ивенты по мере их генерации
|
||||
async for event in self._agent.astream_events(
|
||||
{"messages": [{"role": "user", "content": new_message}]},
|
||||
config=config,
|
||||
version="v2",
|
||||
):
|
||||
|
||||
kind = event["event"]
|
||||
|
||||
# пришли чанки от LLM
|
||||
|
|
@ -162,7 +174,11 @@ class AgentService:
|
|||
yield MsgEventSendFile(path=file_path)
|
||||
|
||||
logger.debug(f"Agent stream completed for chat {chat_id}")
|
||||
finally:
|
||||
logger.debug(f"Flushing Langfuse logs for chat {chat_id}")
|
||||
langfuse_client.flush()
|
||||
|
||||
@observe(as_type="span", name="parse_attachments")
|
||||
async def __describe_attachments(self, raw_paths: list[str]) -> str:
|
||||
lines = []
|
||||
logger.debug(f"Describing {len(raw_paths)} attachments")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue