Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions python/valuecell/agents/sec_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import logging
import os
from enum import Enum
from typing import Iterator

from agno.agent import Agent, RunResponse, RunResponseEvent # noqa
from agno.models.openrouter import OpenRouter
Expand Down Expand Up @@ -211,11 +212,23 @@ async def _process_financial_data_query(
Please ensure the analysis is objective and professional, based on actual data, avoiding excessive speculation.
"""

result = self.analysis_agent.run(analysis_prompt)
response_stream: Iterator[RunResponseEvent] = self.analysis_agent.run(
analysis_prompt, stream=True, stream_intermediate_steps=True
)
for event in response_stream:
if event.event == "RunResponseContent":
yield {
"content": event.content,
"is_task_complete": False,
}
elif event.event == "ToolCallStarted":
print(f"Tool call started: {event.tool}")
elif event.event == "ReasoningStep":
print(f"Reasoning step: {event.content}")
logger.info("Financial data analysis completed")

yield {
"content": result.content,
"content": "",
"is_task_complete": True,
}

Expand Down Expand Up @@ -301,13 +314,26 @@ async def _process_fund_holdings_query(
Please ensure the analysis is objective and professional, based on actual data, avoiding excessive speculation.
"""

result = self.analysis_agent.run(analysis_prompt)
logger.info("13F analysis completed")
response_stream: Iterator[RunResponseEvent] = self.analysis_agent.run(
analysis_prompt, stream=True, stream_intermediate_steps=True
)
for event in response_stream:
if event.event == "RunResponseContent":
yield {
"content": event.content,
"is_task_complete": False,
}
elif event.event == "ToolCallStarted":
print(f"Tool call started: {event.tool}")
elif event.event == "ReasoningStep":
print(f"Reasoning step: {event.content}")
logger.info("Financial data analysis completed")

yield {
"content": result.content,
"content": "",
"is_task_complete": True,
}
logger.info("13F analysis completed")

except Exception as e:
logger.error(f"13F query failed: {e}")
Expand Down