Skip to content

Commit aa39dcc

Browse files
small fixed for agent and chat (#34)
1 parent eae61fe commit aa39dcc

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

assistant/core/agents.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from pydantic_ai import Agent
88
from pydantic_ai.common_tools.tavily import tavily_search_tool
99
from pydantic_ai.messages import ModelMessage, ModelResponse, ThinkingPart
10+
from pydantic_ai.settings import ModelSettings
11+
from pydantic_ai.usage import UsageLimitExceeded, UsageLimits
1012

1113
from assistant.core.models import ModelFactory
1214
from assistant.core.schemas import Deps, ExperimentDefinition, OrchestrationResult, RouterOutput
@@ -71,6 +73,7 @@ def _create_experiment_creator_agent(self) -> Agent[Deps, ExperimentDefinition]:
7173
instructions=load_prompt("experiment_creator_instructions.md").render(),
7274
output_type=ExperimentDefinition,
7375
deps_type=Deps,
76+
model_settings=ModelSettings(max_tokens=10_000),
7477
tools=[
7578
retrieve_metrics_docs,
7679
],
@@ -89,6 +92,7 @@ def _create_internal_database_agent(self) -> Agent[Deps, str]:
8992
instructions=load_prompt("sql_expert_instructions.md").render(),
9093
output_type=str,
9194
deps_type=Deps,
95+
model_settings=ModelSettings(max_tokens=10_000),
9296
tools=[
9397
retrieve_internal_db,
9498
],
@@ -108,6 +112,7 @@ def _create_experiment_analyst_agent(self) -> Agent[Deps, str]:
108112
instructions=load_prompt("experiment_analyst_instructions.md").render(),
109113
output_type=str,
110114
deps_type=Deps,
115+
model_settings=ModelSettings(max_tokens=20_000),
111116
tools=[
112117
get_expanto_app_context,
113118
],
@@ -127,6 +132,7 @@ def _create_internet_search_agent(self) -> Agent[Deps, str]:
127132
instructions=load_prompt("internet_search_instructions.md").render(),
128133
output_type=str,
129134
deps_type=Deps,
135+
model_settings=ModelSettings(max_tokens=10_000),
130136
tools=[tavily_search_tool(self.tavily_api_key)],
131137
)
132138

@@ -139,6 +145,7 @@ def _create_expanto_assistant(self) -> Agent[Deps, str]:
139145
instructions="Use as many tool call as you needed",
140146
output_type=str,
141147
deps_type=Deps,
148+
model_settings=ModelSettings(max_tokens=20_000),
142149
tools=[
143150
retrieve_relevant_docs,
144151
retrieve_codebase_docs,
@@ -160,6 +167,7 @@ def _create_universal_agent(self) -> Agent[Deps, str]:
160167
"Use any tools if you need to answer user question or execute user task",
161168
output_type=str,
162169
deps_type=Deps,
170+
model_settings=ModelSettings(max_tokens=20_000),
163171
tools=[
164172
retrieve_metrics_docs,
165173
retrieve_relevant_docs,
@@ -247,7 +255,17 @@ async def process(self, user_input: str, deps: Deps, message_history: list[Any])
247255
selected_agent = self.agent_manager.get_agent(route_id=route_output.route_id)
248256
logger.info(f"Router decision: {route_output.route_id} → Selected: {selected_agent.name}")
249257
try:
250-
response = await selected_agent.run(user_input, deps=deps, message_history=message_history)
258+
usage_limits = UsageLimits(
259+
request_limit=5,
260+
)
261+
response = await selected_agent.run(
262+
user_input, deps=deps, message_history=message_history, usage_limits=usage_limits
263+
)
264+
except UsageLimitExceeded:
265+
response = await selected_agent.run(
266+
"You working too long. Return final answer", deps=deps, message_history=message_history
267+
)
268+
251269
except Exception as e:
252270
logger.error(f"Agent {selected_agent.name} failed: {e}")
253271
logger.info("Falling back to Multipurpose agent")

src/ui/chat/chat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import streamlit as st
1313

1414
from src.settings import AssistantServiceCfg
15-
from src.ui.chat.elements import MessageHistoryContainer, TokenUsageBar, UserInputField, chat_scroll
15+
from src.ui.chat.elements import MessageHistoryContainer, TokenUsageBar, UserInputField
1616
from src.ui.chat.schemas import MessageType, Role
1717
from src.ui.chat.services import ChatController, HttpAssistantService
1818
from src.ui.resources import load_assistant_service_cfg
@@ -63,7 +63,7 @@ def render() -> None:
6363
UserInputField.render(controller) # if user input: save to chat state and rerun
6464

6565
# Handle input and response logic
66-
run_every = 0.5 if chat_state.future_result else None
66+
run_every = 1.5 if chat_state.future_result else None
6767

6868
@st.fragment(run_every=run_every)
6969
def handle_future_response(placeholder):
@@ -87,6 +87,5 @@ def handle_future_response(placeholder):
8787
st.rerun()
8888
else:
8989
placeholder.show_status()
90-
chat_scroll()
9190

9291
handle_future_response(agent_placeholder)

tests/assistant/test_agents.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
)
1717
from pydantic_ai.models.test import TestModel
1818
from pydantic_ai.result import StreamedRunResult
19+
from pydantic_ai.usage import UsageLimits
1920

2021
from assistant.core.agents import AgentManager, AgentOrchestrator
2122
from assistant.core.models import ModelFactory
@@ -338,4 +339,6 @@ def get_agent_side_effect(route_id):
338339
assert result.output == mock_output_content
339340
mock_agent_manager.get_agent.assert_any_call(route_id="route")
340341
mock_agent_manager.get_agent.assert_any_call(route_id="universal")
341-
mock_agent.run.assert_awaited_once_with(mock_user_input, deps=deps, message_history=[])
342+
mock_agent.run.assert_awaited_once_with(
343+
mock_user_input, deps=deps, message_history=[], usage_limits=UsageLimits(request_limit=5)
344+
)

0 commit comments

Comments
 (0)