agno 2.3.8__py3-none-any.whl → 2.3.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agno/agent/agent.py +134 -82
- agno/db/mysql/__init__.py +2 -1
- agno/db/mysql/async_mysql.py +2888 -0
- agno/db/mysql/mysql.py +17 -8
- agno/db/mysql/utils.py +139 -6
- agno/db/postgres/async_postgres.py +10 -5
- agno/db/postgres/postgres.py +7 -2
- agno/db/schemas/evals.py +1 -0
- agno/db/singlestore/singlestore.py +5 -1
- agno/db/sqlite/async_sqlite.py +2 -2
- agno/eval/__init__.py +10 -0
- agno/eval/agent_as_judge.py +860 -0
- agno/eval/base.py +29 -0
- agno/eval/utils.py +2 -1
- agno/exceptions.py +7 -0
- agno/knowledge/embedder/openai.py +8 -8
- agno/knowledge/knowledge.py +1142 -176
- agno/media.py +22 -6
- agno/models/aws/claude.py +8 -7
- agno/models/base.py +27 -1
- agno/models/deepseek/deepseek.py +67 -0
- agno/models/google/gemini.py +65 -11
- agno/models/google/utils.py +22 -0
- agno/models/message.py +2 -0
- agno/models/openai/chat.py +4 -0
- agno/os/app.py +64 -74
- agno/os/interfaces/a2a/router.py +3 -4
- agno/os/interfaces/agui/router.py +2 -0
- agno/os/router.py +3 -1607
- agno/os/routers/agents/__init__.py +3 -0
- agno/os/routers/agents/router.py +581 -0
- agno/os/routers/agents/schema.py +261 -0
- agno/os/routers/evals/evals.py +26 -6
- agno/os/routers/evals/schemas.py +34 -2
- agno/os/routers/evals/utils.py +101 -20
- agno/os/routers/knowledge/knowledge.py +1 -1
- agno/os/routers/teams/__init__.py +3 -0
- agno/os/routers/teams/router.py +496 -0
- agno/os/routers/teams/schema.py +257 -0
- agno/os/routers/workflows/__init__.py +3 -0
- agno/os/routers/workflows/router.py +545 -0
- agno/os/routers/workflows/schema.py +75 -0
- agno/os/schema.py +1 -559
- agno/os/utils.py +139 -2
- agno/team/team.py +73 -16
- agno/tools/file_generation.py +12 -6
- agno/tools/firecrawl.py +15 -7
- agno/utils/hooks.py +64 -5
- agno/utils/http.py +2 -2
- agno/utils/media.py +11 -1
- agno/utils/print_response/agent.py +8 -0
- agno/utils/print_response/team.py +8 -0
- agno/vectordb/pgvector/pgvector.py +88 -51
- agno/workflow/parallel.py +3 -3
- agno/workflow/step.py +14 -2
- agno/workflow/types.py +38 -2
- agno/workflow/workflow.py +12 -4
- {agno-2.3.8.dist-info → agno-2.3.9.dist-info}/METADATA +7 -2
- {agno-2.3.8.dist-info → agno-2.3.9.dist-info}/RECORD +62 -49
- {agno-2.3.8.dist-info → agno-2.3.9.dist-info}/WHEEL +0 -0
- {agno-2.3.8.dist-info → agno-2.3.9.dist-info}/licenses/LICENSE +0 -0
- {agno-2.3.8.dist-info → agno-2.3.9.dist-info}/top_level.txt +0 -0
agno/agent/agent.py
CHANGED
|
@@ -9,6 +9,7 @@ from inspect import iscoroutinefunction
|
|
|
9
9
|
from os import getenv
|
|
10
10
|
from textwrap import dedent
|
|
11
11
|
from typing import (
|
|
12
|
+
TYPE_CHECKING,
|
|
12
13
|
Any,
|
|
13
14
|
AsyncIterator,
|
|
14
15
|
Callable,
|
|
@@ -30,6 +31,9 @@ from uuid import uuid4
|
|
|
30
31
|
|
|
31
32
|
from pydantic import BaseModel
|
|
32
33
|
|
|
34
|
+
if TYPE_CHECKING:
|
|
35
|
+
from agno.eval.base import BaseEval
|
|
36
|
+
|
|
33
37
|
from agno.compression.manager import CompressionManager
|
|
34
38
|
from agno.culture.manager import CultureManager
|
|
35
39
|
from agno.db.base import AsyncBaseDb, BaseDb, SessionType, UserMemory
|
|
@@ -131,7 +135,13 @@ from agno.utils.events import (
|
|
|
131
135
|
create_tool_call_started_event,
|
|
132
136
|
handle_event,
|
|
133
137
|
)
|
|
134
|
-
from agno.utils.hooks import
|
|
138
|
+
from agno.utils.hooks import (
|
|
139
|
+
copy_args_for_background,
|
|
140
|
+
filter_hook_args,
|
|
141
|
+
normalize_post_hooks,
|
|
142
|
+
normalize_pre_hooks,
|
|
143
|
+
should_run_hook_in_background,
|
|
144
|
+
)
|
|
135
145
|
from agno.utils.knowledge import get_agentic_or_user_search_filters
|
|
136
146
|
from agno.utils.log import (
|
|
137
147
|
log_debug,
|
|
@@ -270,9 +280,9 @@ class Agent:
|
|
|
270
280
|
|
|
271
281
|
# --- Agent Hooks ---
|
|
272
282
|
# Functions called right after agent-session is loaded, before processing starts
|
|
273
|
-
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None
|
|
283
|
+
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None
|
|
274
284
|
# Functions called after output is generated but before the response is returned
|
|
275
|
-
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None
|
|
285
|
+
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None
|
|
276
286
|
# If True, run hooks as FastAPI background tasks (non-blocking). Set by AgentOS.
|
|
277
287
|
_run_hooks_in_background: Optional[bool] = None
|
|
278
288
|
|
|
@@ -308,6 +318,8 @@ class Agent:
|
|
|
308
318
|
system_message: Optional[Union[str, Callable, Message]] = None
|
|
309
319
|
# Role for the system message
|
|
310
320
|
system_message_role: str = "system"
|
|
321
|
+
# Provide the introduction as the first message from the Agent
|
|
322
|
+
introduction: Optional[str] = None
|
|
311
323
|
# Set to False to skip context building
|
|
312
324
|
build_context: bool = True
|
|
313
325
|
|
|
@@ -436,7 +448,6 @@ class Agent:
|
|
|
436
448
|
model: Optional[Union[Model, str]] = None,
|
|
437
449
|
name: Optional[str] = None,
|
|
438
450
|
id: Optional[str] = None,
|
|
439
|
-
introduction: Optional[str] = None,
|
|
440
451
|
user_id: Optional[str] = None,
|
|
441
452
|
session_id: Optional[str] = None,
|
|
442
453
|
session_state: Optional[Dict[str, Any]] = None,
|
|
@@ -476,8 +487,8 @@ class Agent:
|
|
|
476
487
|
tool_call_limit: Optional[int] = None,
|
|
477
488
|
tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
|
|
478
489
|
tool_hooks: Optional[List[Callable]] = None,
|
|
479
|
-
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None,
|
|
480
|
-
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None,
|
|
490
|
+
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None,
|
|
491
|
+
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None,
|
|
481
492
|
reasoning: bool = False,
|
|
482
493
|
reasoning_model: Optional[Union[Model, str]] = None,
|
|
483
494
|
reasoning_agent: Optional[Agent] = None,
|
|
@@ -490,6 +501,7 @@ class Agent:
|
|
|
490
501
|
send_media_to_model: bool = True,
|
|
491
502
|
system_message: Optional[Union[str, Callable, Message]] = None,
|
|
492
503
|
system_message_role: str = "system",
|
|
504
|
+
introduction: Optional[str] = None,
|
|
493
505
|
build_context: bool = True,
|
|
494
506
|
description: Optional[str] = None,
|
|
495
507
|
instructions: Optional[Union[str, List[str], Callable]] = None,
|
|
@@ -1559,6 +1571,7 @@ class Agent:
|
|
|
1559
1571
|
session_id: Optional[str] = None,
|
|
1560
1572
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1561
1573
|
run_context: Optional[RunContext] = None,
|
|
1574
|
+
run_id: Optional[str] = None,
|
|
1562
1575
|
audio: Optional[Sequence[Audio]] = None,
|
|
1563
1576
|
images: Optional[Sequence[Image]] = None,
|
|
1564
1577
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1586,6 +1599,7 @@ class Agent:
|
|
|
1586
1599
|
session_id: Optional[str] = None,
|
|
1587
1600
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1588
1601
|
run_context: Optional[RunContext] = None,
|
|
1602
|
+
run_id: Optional[str] = None,
|
|
1589
1603
|
audio: Optional[Sequence[Audio]] = None,
|
|
1590
1604
|
images: Optional[Sequence[Image]] = None,
|
|
1591
1605
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1614,6 +1628,7 @@ class Agent:
|
|
|
1614
1628
|
session_id: Optional[str] = None,
|
|
1615
1629
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1616
1630
|
run_context: Optional[RunContext] = None,
|
|
1631
|
+
run_id: Optional[str] = None,
|
|
1617
1632
|
audio: Optional[Sequence[Audio]] = None,
|
|
1618
1633
|
images: Optional[Sequence[Image]] = None,
|
|
1619
1634
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1636,8 +1651,8 @@ class Agent:
|
|
|
1636
1651
|
"`run` method is not supported with an async database. Please use `arun` method instead."
|
|
1637
1652
|
)
|
|
1638
1653
|
|
|
1639
|
-
#
|
|
1640
|
-
run_id = str(uuid4())
|
|
1654
|
+
# Set the id for the run and register it immediately for cancellation tracking
|
|
1655
|
+
run_id = run_id or str(uuid4())
|
|
1641
1656
|
register_run(run_id)
|
|
1642
1657
|
|
|
1643
1658
|
if (add_history_to_context or self.add_history_to_context) and not self.db and not self.team_id:
|
|
@@ -1664,9 +1679,9 @@ class Agent:
|
|
|
1664
1679
|
# Normalise hook & guardails
|
|
1665
1680
|
if not self._hooks_normalised:
|
|
1666
1681
|
if self.pre_hooks:
|
|
1667
|
-
self.pre_hooks =
|
|
1682
|
+
self.pre_hooks = normalize_pre_hooks(self.pre_hooks) # type: ignore
|
|
1668
1683
|
if self.post_hooks:
|
|
1669
|
-
self.post_hooks =
|
|
1684
|
+
self.post_hooks = normalize_post_hooks(self.post_hooks) # type: ignore
|
|
1670
1685
|
self._hooks_normalised = True
|
|
1671
1686
|
|
|
1672
1687
|
session_id, user_id = self._initialize_session(session_id=session_id, user_id=user_id)
|
|
@@ -1724,7 +1739,8 @@ class Agent:
|
|
|
1724
1739
|
num_attempts = self.retries + 1
|
|
1725
1740
|
|
|
1726
1741
|
for attempt in range(num_attempts):
|
|
1727
|
-
|
|
1742
|
+
if attempt > 0:
|
|
1743
|
+
log_debug(f"Retrying Agent run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
1728
1744
|
|
|
1729
1745
|
try:
|
|
1730
1746
|
# Resolve dependencies
|
|
@@ -1803,74 +1819,69 @@ class Agent:
|
|
|
1803
1819
|
|
|
1804
1820
|
yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
|
|
1805
1821
|
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
run_response.status = RunStatus.cancelled
|
|
1822
|
+
if stream:
|
|
1823
|
+
response_iterator = self._run_stream(
|
|
1824
|
+
run_response=run_response,
|
|
1825
|
+
run_context=run_context,
|
|
1826
|
+
session=agent_session,
|
|
1827
|
+
user_id=user_id,
|
|
1828
|
+
add_history_to_context=add_history,
|
|
1829
|
+
add_dependencies_to_context=add_dependencies,
|
|
1830
|
+
add_session_state_to_context=add_session_state,
|
|
1831
|
+
response_format=response_format,
|
|
1832
|
+
stream_events=stream_events,
|
|
1833
|
+
yield_run_output=yield_run_output,
|
|
1834
|
+
debug_mode=debug_mode,
|
|
1835
|
+
background_tasks=background_tasks,
|
|
1836
|
+
**kwargs,
|
|
1837
|
+
)
|
|
1838
|
+
return response_iterator
|
|
1839
|
+
else:
|
|
1840
|
+
response = self._run(
|
|
1841
|
+
run_response=run_response,
|
|
1842
|
+
run_context=run_context,
|
|
1843
|
+
session=agent_session,
|
|
1844
|
+
user_id=user_id,
|
|
1845
|
+
add_history_to_context=add_history,
|
|
1846
|
+
add_dependencies_to_context=add_dependencies,
|
|
1847
|
+
add_session_state_to_context=add_session_state,
|
|
1848
|
+
response_format=response_format,
|
|
1849
|
+
debug_mode=debug_mode,
|
|
1850
|
+
background_tasks=background_tasks,
|
|
1851
|
+
**kwargs,
|
|
1852
|
+
)
|
|
1853
|
+
return response
|
|
1854
|
+
except (InputCheckError, OutputCheckError) as e:
|
|
1855
|
+
log_error(f"Validation failed: {str(e)} | Check: {e.check_trigger}")
|
|
1856
|
+
raise e
|
|
1857
|
+
except KeyboardInterrupt:
|
|
1858
|
+
run_response.content = "Operation cancelled by user"
|
|
1859
|
+
run_response.status = RunStatus.cancelled
|
|
1845
1860
|
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
)
|
|
1861
|
+
if stream:
|
|
1862
|
+
return generator_wrapper( # type: ignore
|
|
1863
|
+
create_run_cancelled_event(
|
|
1864
|
+
from_run_response=run_response,
|
|
1865
|
+
reason="Operation cancelled by user",
|
|
1852
1866
|
)
|
|
1867
|
+
)
|
|
1868
|
+
else:
|
|
1869
|
+
return run_response
|
|
1870
|
+
except Exception as e:
|
|
1871
|
+
# Check if this is the last attempt
|
|
1872
|
+
if attempt < num_attempts - 1:
|
|
1873
|
+
# Calculate delay with exponential backoff if enabled
|
|
1874
|
+
if self.exponential_backoff:
|
|
1875
|
+
delay = self.delay_between_retries * (2**attempt)
|
|
1853
1876
|
else:
|
|
1854
|
-
|
|
1855
|
-
except Exception as e:
|
|
1856
|
-
# Check if this is the last attempt
|
|
1857
|
-
if attempt < num_attempts - 1:
|
|
1858
|
-
# Calculate delay with exponential backoff if enabled
|
|
1859
|
-
if self.exponential_backoff:
|
|
1860
|
-
delay = self.delay_between_retries * (2**attempt)
|
|
1861
|
-
else:
|
|
1862
|
-
delay = self.delay_between_retries
|
|
1877
|
+
delay = self.delay_between_retries
|
|
1863
1878
|
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
raise
|
|
1871
|
-
except Exception as e:
|
|
1872
|
-
log_error(f"Unexpected error: {str(e)}")
|
|
1873
|
-
if attempt == num_attempts - 1:
|
|
1879
|
+
log_warning(f"Attempt {attempt + 1}/{num_attempts} failed: {str(e)}. Retrying in {delay}s...")
|
|
1880
|
+
time.sleep(delay)
|
|
1881
|
+
continue
|
|
1882
|
+
else:
|
|
1883
|
+
# Final attempt failed - re-raise the exception
|
|
1884
|
+
log_error(f"All {num_attempts} attempts failed. Final error: {str(e)}")
|
|
1874
1885
|
if stream:
|
|
1875
1886
|
return generator_wrapper(create_run_error_event(run_response, error=str(e))) # type: ignore
|
|
1876
1887
|
raise e
|
|
@@ -2539,6 +2550,7 @@ class Agent:
|
|
|
2539
2550
|
session_id: Optional[str] = None,
|
|
2540
2551
|
session_state: Optional[Dict[str, Any]] = None,
|
|
2541
2552
|
run_context: Optional[RunContext] = None,
|
|
2553
|
+
run_id: Optional[str] = None,
|
|
2542
2554
|
audio: Optional[Sequence[Audio]] = None,
|
|
2543
2555
|
images: Optional[Sequence[Image]] = None,
|
|
2544
2556
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2565,6 +2577,7 @@ class Agent:
|
|
|
2565
2577
|
user_id: Optional[str] = None,
|
|
2566
2578
|
session_id: Optional[str] = None,
|
|
2567
2579
|
run_context: Optional[RunContext] = None,
|
|
2580
|
+
run_id: Optional[str] = None,
|
|
2568
2581
|
audio: Optional[Sequence[Audio]] = None,
|
|
2569
2582
|
images: Optional[Sequence[Image]] = None,
|
|
2570
2583
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2593,6 +2606,7 @@ class Agent:
|
|
|
2593
2606
|
session_id: Optional[str] = None,
|
|
2594
2607
|
session_state: Optional[Dict[str, Any]] = None,
|
|
2595
2608
|
run_context: Optional[RunContext] = None,
|
|
2609
|
+
run_id: Optional[str] = None,
|
|
2596
2610
|
audio: Optional[Sequence[Audio]] = None,
|
|
2597
2611
|
images: Optional[Sequence[Image]] = None,
|
|
2598
2612
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2613,8 +2627,8 @@ class Agent:
|
|
|
2613
2627
|
) -> Union[RunOutput, AsyncIterator[RunOutputEvent]]:
|
|
2614
2628
|
"""Async Run the Agent and return the response."""
|
|
2615
2629
|
|
|
2616
|
-
#
|
|
2617
|
-
run_id = str(uuid4())
|
|
2630
|
+
# Set the id for the run and register it immediately for cancellation tracking
|
|
2631
|
+
run_id = run_id or str(uuid4())
|
|
2618
2632
|
register_run(run_id)
|
|
2619
2633
|
|
|
2620
2634
|
if (add_history_to_context or self.add_history_to_context) and not self.db and not self.team_id:
|
|
@@ -2641,9 +2655,9 @@ class Agent:
|
|
|
2641
2655
|
# Normalise hooks & guardails
|
|
2642
2656
|
if not self._hooks_normalised:
|
|
2643
2657
|
if self.pre_hooks:
|
|
2644
|
-
self.pre_hooks =
|
|
2658
|
+
self.pre_hooks = normalize_pre_hooks(self.pre_hooks, async_mode=True) # type: ignore
|
|
2645
2659
|
if self.post_hooks:
|
|
2646
|
-
self.post_hooks =
|
|
2660
|
+
self.post_hooks = normalize_post_hooks(self.post_hooks, async_mode=True) # type: ignore
|
|
2647
2661
|
self._hooks_normalised = True
|
|
2648
2662
|
|
|
2649
2663
|
# Initialize session
|
|
@@ -2760,7 +2774,9 @@ class Agent:
|
|
|
2760
2774
|
num_attempts = self.retries + 1
|
|
2761
2775
|
|
|
2762
2776
|
for attempt in range(num_attempts):
|
|
2763
|
-
|
|
2777
|
+
if attempt > 0:
|
|
2778
|
+
log_debug(f"Retrying Agent run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
2779
|
+
|
|
2764
2780
|
try:
|
|
2765
2781
|
# Pass the new run_response to _arun
|
|
2766
2782
|
if stream:
|
|
@@ -2960,7 +2976,8 @@ class Agent:
|
|
|
2960
2976
|
num_attempts = self.retries + 1
|
|
2961
2977
|
|
|
2962
2978
|
for attempt in range(num_attempts):
|
|
2963
|
-
|
|
2979
|
+
if attempt > 0:
|
|
2980
|
+
log_debug(f"Retrying Agent continue_run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
2964
2981
|
|
|
2965
2982
|
try:
|
|
2966
2983
|
# Resolve dependencies
|
|
@@ -3606,7 +3623,8 @@ class Agent:
|
|
|
3606
3623
|
)
|
|
3607
3624
|
|
|
3608
3625
|
for attempt in range(num_attempts):
|
|
3609
|
-
|
|
3626
|
+
if attempt > 0:
|
|
3627
|
+
log_debug(f"Retrying Agent acontinue_run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
3610
3628
|
|
|
3611
3629
|
try:
|
|
3612
3630
|
if stream:
|
|
@@ -6352,6 +6370,20 @@ class Agent:
|
|
|
6352
6370
|
metadata=self.metadata,
|
|
6353
6371
|
created_at=int(time()),
|
|
6354
6372
|
)
|
|
6373
|
+
if self.introduction is not None:
|
|
6374
|
+
agent_session.upsert_run(
|
|
6375
|
+
RunOutput(
|
|
6376
|
+
run_id=str(uuid4()),
|
|
6377
|
+
session_id=session_id,
|
|
6378
|
+
agent_id=self.id,
|
|
6379
|
+
agent_name=self.name,
|
|
6380
|
+
user_id=user_id,
|
|
6381
|
+
content=self.introduction,
|
|
6382
|
+
messages=[
|
|
6383
|
+
Message(role=self.model.assistant_message_role, content=self.introduction) # type: ignore
|
|
6384
|
+
],
|
|
6385
|
+
)
|
|
6386
|
+
)
|
|
6355
6387
|
|
|
6356
6388
|
if self.cache_session:
|
|
6357
6389
|
self._cached_session = agent_session
|
|
@@ -6395,6 +6427,20 @@ class Agent:
|
|
|
6395
6427
|
metadata=self.metadata,
|
|
6396
6428
|
created_at=int(time()),
|
|
6397
6429
|
)
|
|
6430
|
+
if self.introduction is not None:
|
|
6431
|
+
agent_session.upsert_run(
|
|
6432
|
+
RunOutput(
|
|
6433
|
+
run_id=str(uuid4()),
|
|
6434
|
+
session_id=session_id,
|
|
6435
|
+
agent_id=self.id,
|
|
6436
|
+
agent_name=self.name,
|
|
6437
|
+
user_id=user_id,
|
|
6438
|
+
content=self.introduction,
|
|
6439
|
+
messages=[
|
|
6440
|
+
Message(role=self.model.assistant_message_role, content=self.introduction) # type: ignore
|
|
6441
|
+
],
|
|
6442
|
+
)
|
|
6443
|
+
)
|
|
6398
6444
|
|
|
6399
6445
|
if self.cache_session:
|
|
6400
6446
|
self._cached_session = agent_session
|
|
@@ -10551,6 +10597,7 @@ class Agent:
|
|
|
10551
10597
|
session_id: Optional[str] = None,
|
|
10552
10598
|
session_state: Optional[Dict[str, Any]] = None,
|
|
10553
10599
|
user_id: Optional[str] = None,
|
|
10600
|
+
run_id: Optional[str] = None,
|
|
10554
10601
|
audio: Optional[Sequence[Audio]] = None,
|
|
10555
10602
|
images: Optional[Sequence[Image]] = None,
|
|
10556
10603
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -10600,6 +10647,7 @@ class Agent:
|
|
|
10600
10647
|
session_id=session_id,
|
|
10601
10648
|
session_state=session_state,
|
|
10602
10649
|
user_id=user_id,
|
|
10650
|
+
run_id=run_id,
|
|
10603
10651
|
audio=audio,
|
|
10604
10652
|
images=images,
|
|
10605
10653
|
videos=videos,
|
|
@@ -10628,6 +10676,7 @@ class Agent:
|
|
|
10628
10676
|
session_id=session_id,
|
|
10629
10677
|
session_state=session_state,
|
|
10630
10678
|
user_id=user_id,
|
|
10679
|
+
run_id=run_id,
|
|
10631
10680
|
audio=audio,
|
|
10632
10681
|
images=images,
|
|
10633
10682
|
videos=videos,
|
|
@@ -10655,6 +10704,7 @@ class Agent:
|
|
|
10655
10704
|
session_id: Optional[str] = None,
|
|
10656
10705
|
session_state: Optional[Dict[str, Any]] = None,
|
|
10657
10706
|
user_id: Optional[str] = None,
|
|
10707
|
+
run_id: Optional[str] = None,
|
|
10658
10708
|
audio: Optional[Sequence[Audio]] = None,
|
|
10659
10709
|
images: Optional[Sequence[Image]] = None,
|
|
10660
10710
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -10698,6 +10748,7 @@ class Agent:
|
|
|
10698
10748
|
session_id=session_id,
|
|
10699
10749
|
session_state=session_state,
|
|
10700
10750
|
user_id=user_id,
|
|
10751
|
+
run_id=run_id,
|
|
10701
10752
|
audio=audio,
|
|
10702
10753
|
images=images,
|
|
10703
10754
|
videos=videos,
|
|
@@ -10725,6 +10776,7 @@ class Agent:
|
|
|
10725
10776
|
session_id=session_id,
|
|
10726
10777
|
session_state=session_state,
|
|
10727
10778
|
user_id=user_id,
|
|
10779
|
+
run_id=run_id,
|
|
10728
10780
|
audio=audio,
|
|
10729
10781
|
images=images,
|
|
10730
10782
|
videos=videos,
|
agno/db/mysql/__init__.py
CHANGED