agno 1.8.1__py3-none-any.whl → 2.0.0a1__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/__init__.py +8 -0
- agno/agent/__init__.py +19 -27
- agno/agent/agent.py +2778 -4123
- agno/api/agent.py +9 -65
- agno/api/api.py +5 -46
- agno/api/evals.py +6 -17
- agno/api/os.py +17 -0
- agno/api/routes.py +6 -41
- agno/api/schemas/__init__.py +9 -0
- agno/api/schemas/agent.py +5 -21
- agno/api/schemas/evals.py +7 -16
- agno/api/schemas/os.py +14 -0
- agno/api/schemas/team.py +5 -21
- agno/api/schemas/utils.py +21 -0
- agno/api/schemas/workflows.py +11 -7
- agno/api/settings.py +53 -0
- agno/api/team.py +9 -64
- agno/api/workflow.py +28 -0
- agno/cloud/aws/base.py +214 -0
- agno/cloud/aws/s3/__init__.py +2 -0
- agno/cloud/aws/s3/api_client.py +43 -0
- agno/cloud/aws/s3/bucket.py +195 -0
- agno/cloud/aws/s3/object.py +57 -0
- agno/db/__init__.py +24 -0
- agno/db/base.py +245 -0
- agno/db/dynamo/__init__.py +3 -0
- agno/db/dynamo/dynamo.py +1749 -0
- agno/db/dynamo/schemas.py +278 -0
- agno/db/dynamo/utils.py +684 -0
- agno/db/firestore/__init__.py +3 -0
- agno/db/firestore/firestore.py +1438 -0
- agno/db/firestore/schemas.py +130 -0
- agno/db/firestore/utils.py +278 -0
- agno/db/gcs_json/__init__.py +3 -0
- agno/db/gcs_json/gcs_json_db.py +1001 -0
- agno/db/gcs_json/utils.py +194 -0
- agno/db/in_memory/__init__.py +3 -0
- agno/db/in_memory/in_memory_db.py +888 -0
- agno/db/in_memory/utils.py +172 -0
- agno/db/json/__init__.py +3 -0
- agno/db/json/json_db.py +1051 -0
- agno/db/json/utils.py +196 -0
- agno/db/migrations/v1_to_v2.py +162 -0
- agno/db/mongo/__init__.py +3 -0
- agno/db/mongo/mongo.py +1417 -0
- agno/db/mongo/schemas.py +77 -0
- agno/db/mongo/utils.py +204 -0
- agno/db/mysql/__init__.py +3 -0
- agno/db/mysql/mysql.py +1719 -0
- agno/db/mysql/schemas.py +124 -0
- agno/db/mysql/utils.py +298 -0
- agno/db/postgres/__init__.py +3 -0
- agno/db/postgres/postgres.py +1720 -0
- agno/db/postgres/schemas.py +124 -0
- agno/db/postgres/utils.py +281 -0
- agno/db/redis/__init__.py +3 -0
- agno/db/redis/redis.py +1371 -0
- agno/db/redis/schemas.py +109 -0
- agno/db/redis/utils.py +288 -0
- agno/db/schemas/__init__.py +3 -0
- agno/db/schemas/evals.py +33 -0
- agno/db/schemas/knowledge.py +40 -0
- agno/db/schemas/memory.py +46 -0
- agno/db/singlestore/__init__.py +3 -0
- agno/db/singlestore/schemas.py +116 -0
- agno/db/singlestore/singlestore.py +1722 -0
- agno/db/singlestore/utils.py +327 -0
- agno/db/sqlite/__init__.py +3 -0
- agno/db/sqlite/schemas.py +119 -0
- agno/db/sqlite/sqlite.py +1680 -0
- agno/db/sqlite/utils.py +269 -0
- agno/db/utils.py +88 -0
- agno/eval/__init__.py +14 -0
- agno/eval/accuracy.py +142 -43
- agno/eval/performance.py +88 -23
- agno/eval/reliability.py +73 -20
- agno/eval/utils.py +23 -13
- agno/integrations/discord/__init__.py +3 -0
- agno/{app → integrations}/discord/client.py +10 -10
- agno/knowledge/__init__.py +2 -2
- agno/{document → knowledge}/chunking/agentic.py +2 -2
- agno/{document → knowledge}/chunking/document.py +2 -2
- agno/{document → knowledge}/chunking/fixed.py +3 -3
- agno/{document → knowledge}/chunking/markdown.py +2 -2
- agno/{document → knowledge}/chunking/recursive.py +2 -2
- agno/{document → knowledge}/chunking/row.py +2 -2
- agno/knowledge/chunking/semantic.py +59 -0
- agno/knowledge/chunking/strategy.py +121 -0
- agno/knowledge/content.py +74 -0
- agno/knowledge/document/__init__.py +5 -0
- agno/{document → knowledge/document}/base.py +12 -2
- agno/knowledge/embedder/__init__.py +5 -0
- agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
- agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
- agno/{embedder → knowledge/embedder}/base.py +6 -0
- agno/{embedder → knowledge/embedder}/cohere.py +72 -1
- agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
- agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
- agno/{embedder → knowledge/embedder}/google.py +74 -1
- agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
- agno/{embedder → knowledge/embedder}/jina.py +48 -2
- agno/knowledge/embedder/langdb.py +22 -0
- agno/knowledge/embedder/mistral.py +139 -0
- agno/{embedder → knowledge/embedder}/nebius.py +1 -1
- agno/{embedder → knowledge/embedder}/ollama.py +54 -3
- agno/knowledge/embedder/openai.py +223 -0
- agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
- agno/{embedder → knowledge/embedder}/together.py +1 -1
- agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
- agno/knowledge/knowledge.py +1515 -0
- agno/knowledge/reader/__init__.py +7 -0
- agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
- agno/knowledge/reader/base.py +88 -0
- agno/{document → knowledge}/reader/csv_reader.py +68 -15
- agno/knowledge/reader/docx_reader.py +83 -0
- agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
- agno/knowledge/reader/gcs_reader.py +67 -0
- agno/{document → knowledge}/reader/json_reader.py +30 -9
- agno/{document → knowledge}/reader/markdown_reader.py +36 -9
- agno/{document → knowledge}/reader/pdf_reader.py +79 -21
- agno/knowledge/reader/reader_factory.py +275 -0
- agno/knowledge/reader/s3_reader.py +171 -0
- agno/{document → knowledge}/reader/text_reader.py +31 -10
- agno/knowledge/reader/url_reader.py +84 -0
- agno/knowledge/reader/web_search_reader.py +389 -0
- agno/{document → knowledge}/reader/website_reader.py +37 -10
- agno/knowledge/reader/wikipedia_reader.py +59 -0
- agno/knowledge/reader/youtube_reader.py +78 -0
- agno/knowledge/remote_content/remote_content.py +88 -0
- agno/{reranker → knowledge/reranker}/base.py +1 -1
- agno/{reranker → knowledge/reranker}/cohere.py +2 -2
- agno/{reranker → knowledge/reranker}/infinity.py +2 -2
- agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
- agno/knowledge/types.py +30 -0
- agno/knowledge/utils.py +169 -0
- agno/memory/__init__.py +2 -10
- agno/memory/manager.py +1003 -148
- agno/models/aimlapi/__init__.py +2 -2
- agno/models/aimlapi/aimlapi.py +6 -6
- agno/models/anthropic/claude.py +129 -82
- agno/models/aws/bedrock.py +107 -175
- agno/models/aws/claude.py +64 -18
- agno/models/azure/ai_foundry.py +73 -23
- agno/models/base.py +347 -287
- agno/models/cerebras/cerebras.py +84 -27
- agno/models/cohere/chat.py +106 -98
- agno/models/google/gemini.py +100 -42
- agno/models/groq/groq.py +97 -35
- agno/models/huggingface/huggingface.py +92 -27
- agno/models/ibm/watsonx.py +72 -13
- agno/models/litellm/chat.py +85 -13
- agno/models/message.py +38 -144
- agno/models/meta/llama.py +85 -49
- agno/models/metrics.py +120 -0
- agno/models/mistral/mistral.py +90 -21
- agno/models/ollama/__init__.py +0 -2
- agno/models/ollama/chat.py +84 -46
- agno/models/openai/chat.py +121 -23
- agno/models/openai/responses.py +178 -105
- agno/models/perplexity/perplexity.py +26 -2
- agno/models/portkey/portkey.py +0 -7
- agno/models/response.py +14 -8
- agno/models/utils.py +20 -0
- agno/models/vercel/__init__.py +2 -2
- agno/models/vercel/v0.py +1 -1
- agno/models/vllm/__init__.py +2 -2
- agno/models/vllm/vllm.py +3 -3
- agno/models/xai/xai.py +10 -10
- agno/os/__init__.py +3 -0
- agno/os/app.py +393 -0
- agno/os/auth.py +47 -0
- agno/os/config.py +103 -0
- agno/os/interfaces/agui/__init__.py +3 -0
- agno/os/interfaces/agui/agui.py +31 -0
- agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
- agno/{app → os/interfaces}/agui/utils.py +65 -28
- agno/os/interfaces/base.py +21 -0
- agno/os/interfaces/slack/__init__.py +3 -0
- agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
- agno/os/interfaces/slack/slack.py +33 -0
- agno/os/interfaces/whatsapp/__init__.py +3 -0
- agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
- agno/os/interfaces/whatsapp/whatsapp.py +30 -0
- agno/os/router.py +843 -0
- agno/os/routers/__init__.py +3 -0
- agno/os/routers/evals/__init__.py +3 -0
- agno/os/routers/evals/evals.py +204 -0
- agno/os/routers/evals/schemas.py +142 -0
- agno/os/routers/evals/utils.py +161 -0
- agno/os/routers/knowledge/__init__.py +3 -0
- agno/os/routers/knowledge/knowledge.py +413 -0
- agno/os/routers/knowledge/schemas.py +118 -0
- agno/os/routers/memory/__init__.py +3 -0
- agno/os/routers/memory/memory.py +179 -0
- agno/os/routers/memory/schemas.py +58 -0
- agno/os/routers/metrics/__init__.py +3 -0
- agno/os/routers/metrics/metrics.py +58 -0
- agno/os/routers/metrics/schemas.py +47 -0
- agno/os/routers/session/__init__.py +3 -0
- agno/os/routers/session/session.py +163 -0
- agno/os/schema.py +892 -0
- agno/{app/playground → os}/settings.py +8 -15
- agno/os/utils.py +270 -0
- agno/reasoning/azure_ai_foundry.py +4 -4
- agno/reasoning/deepseek.py +4 -4
- agno/reasoning/default.py +6 -11
- agno/reasoning/groq.py +4 -4
- agno/reasoning/helpers.py +4 -6
- agno/reasoning/ollama.py +4 -4
- agno/reasoning/openai.py +4 -4
- agno/run/{response.py → agent.py} +144 -72
- agno/run/base.py +44 -58
- agno/run/cancel.py +83 -0
- agno/run/team.py +133 -77
- agno/run/workflow.py +537 -12
- agno/session/__init__.py +10 -0
- agno/session/agent.py +244 -0
- agno/session/summary.py +225 -0
- agno/session/team.py +262 -0
- agno/{storage/session/v2 → session}/workflow.py +47 -24
- agno/team/__init__.py +15 -16
- agno/team/team.py +2961 -4253
- agno/tools/agentql.py +14 -5
- agno/tools/airflow.py +9 -4
- agno/tools/api.py +7 -3
- agno/tools/apify.py +2 -46
- agno/tools/arxiv.py +8 -3
- agno/tools/aws_lambda.py +7 -5
- agno/tools/aws_ses.py +7 -1
- agno/tools/baidusearch.py +4 -1
- agno/tools/bitbucket.py +4 -4
- agno/tools/brandfetch.py +14 -11
- agno/tools/bravesearch.py +4 -1
- agno/tools/brightdata.py +42 -22
- agno/tools/browserbase.py +13 -4
- agno/tools/calcom.py +12 -10
- agno/tools/calculator.py +10 -27
- agno/tools/cartesia.py +18 -13
- agno/tools/{clickup_tool.py → clickup.py} +12 -25
- agno/tools/confluence.py +8 -8
- agno/tools/crawl4ai.py +7 -1
- agno/tools/csv_toolkit.py +9 -8
- agno/tools/dalle.py +18 -11
- agno/tools/daytona.py +13 -16
- agno/tools/decorator.py +6 -3
- agno/tools/desi_vocal.py +16 -7
- agno/tools/discord.py +11 -8
- agno/tools/docker.py +30 -42
- agno/tools/duckdb.py +34 -53
- agno/tools/duckduckgo.py +8 -7
- agno/tools/e2b.py +61 -61
- agno/tools/eleven_labs.py +35 -28
- agno/tools/email.py +4 -1
- agno/tools/evm.py +7 -1
- agno/tools/exa.py +19 -14
- agno/tools/fal.py +29 -29
- agno/tools/file.py +9 -8
- agno/tools/financial_datasets.py +25 -44
- agno/tools/firecrawl.py +22 -22
- agno/tools/function.py +68 -17
- agno/tools/giphy.py +22 -10
- agno/tools/github.py +48 -126
- agno/tools/gmail.py +45 -61
- agno/tools/google_bigquery.py +7 -6
- agno/tools/google_maps.py +11 -26
- agno/tools/googlesearch.py +7 -2
- agno/tools/googlesheets.py +21 -17
- agno/tools/hackernews.py +9 -5
- agno/tools/jina.py +5 -4
- agno/tools/jira.py +18 -9
- agno/tools/knowledge.py +31 -32
- agno/tools/linear.py +18 -33
- agno/tools/linkup.py +5 -1
- agno/tools/local_file_system.py +8 -5
- agno/tools/lumalab.py +31 -19
- agno/tools/mem0.py +18 -12
- agno/tools/memori.py +14 -10
- agno/tools/mlx_transcribe.py +3 -2
- agno/tools/models/azure_openai.py +32 -14
- agno/tools/models/gemini.py +58 -31
- agno/tools/models/groq.py +29 -20
- agno/tools/models/nebius.py +27 -11
- agno/tools/models_labs.py +39 -15
- agno/tools/moviepy_video.py +7 -6
- agno/tools/neo4j.py +10 -8
- agno/tools/newspaper.py +7 -2
- agno/tools/newspaper4k.py +8 -3
- agno/tools/openai.py +57 -26
- agno/tools/openbb.py +12 -11
- agno/tools/opencv.py +62 -46
- agno/tools/openweather.py +14 -12
- agno/tools/pandas.py +11 -3
- agno/tools/postgres.py +4 -12
- agno/tools/pubmed.py +4 -1
- agno/tools/python.py +9 -22
- agno/tools/reasoning.py +35 -27
- agno/tools/reddit.py +11 -26
- agno/tools/replicate.py +54 -41
- agno/tools/resend.py +4 -1
- agno/tools/scrapegraph.py +15 -14
- agno/tools/searxng.py +10 -23
- agno/tools/serpapi.py +6 -3
- agno/tools/serper.py +13 -4
- agno/tools/shell.py +9 -2
- agno/tools/slack.py +12 -11
- agno/tools/sleep.py +3 -2
- agno/tools/spider.py +24 -4
- agno/tools/sql.py +7 -6
- agno/tools/tavily.py +6 -4
- agno/tools/telegram.py +12 -4
- agno/tools/todoist.py +11 -31
- agno/tools/toolkit.py +1 -1
- agno/tools/trafilatura.py +22 -6
- agno/tools/trello.py +9 -22
- agno/tools/twilio.py +10 -3
- agno/tools/user_control_flow.py +6 -1
- agno/tools/valyu.py +34 -5
- agno/tools/visualization.py +19 -28
- agno/tools/webbrowser.py +4 -3
- agno/tools/webex.py +11 -7
- agno/tools/website.py +15 -46
- agno/tools/webtools.py +12 -4
- agno/tools/whatsapp.py +5 -9
- agno/tools/wikipedia.py +20 -13
- agno/tools/x.py +14 -13
- agno/tools/yfinance.py +13 -40
- agno/tools/youtube.py +26 -20
- agno/tools/zendesk.py +7 -2
- agno/tools/zep.py +10 -7
- agno/tools/zoom.py +10 -9
- agno/utils/common.py +1 -19
- agno/utils/events.py +95 -118
- agno/utils/knowledge.py +29 -0
- agno/utils/log.py +2 -2
- agno/utils/mcp.py +11 -5
- agno/utils/media.py +39 -0
- agno/utils/message.py +12 -1
- agno/utils/models/claude.py +6 -4
- agno/utils/models/mistral.py +8 -7
- agno/utils/models/schema_utils.py +3 -3
- agno/utils/pprint.py +33 -32
- agno/utils/print_response/agent.py +779 -0
- agno/utils/print_response/team.py +1565 -0
- agno/utils/print_response/workflow.py +1451 -0
- agno/utils/prompts.py +14 -14
- agno/utils/reasoning.py +87 -0
- agno/utils/response.py +42 -42
- agno/utils/string.py +8 -22
- agno/utils/team.py +50 -0
- agno/utils/timer.py +2 -2
- agno/vectordb/base.py +33 -21
- agno/vectordb/cassandra/cassandra.py +287 -23
- agno/vectordb/chroma/chromadb.py +482 -59
- agno/vectordb/clickhouse/clickhousedb.py +270 -63
- agno/vectordb/couchbase/couchbase.py +309 -29
- agno/vectordb/lancedb/lance_db.py +360 -21
- agno/vectordb/langchaindb/__init__.py +5 -0
- agno/vectordb/langchaindb/langchaindb.py +145 -0
- agno/vectordb/lightrag/__init__.py +5 -0
- agno/vectordb/lightrag/lightrag.py +374 -0
- agno/vectordb/llamaindex/llamaindexdb.py +127 -0
- agno/vectordb/milvus/milvus.py +242 -32
- agno/vectordb/mongodb/mongodb.py +200 -24
- agno/vectordb/pgvector/pgvector.py +319 -37
- agno/vectordb/pineconedb/pineconedb.py +221 -27
- agno/vectordb/qdrant/qdrant.py +334 -14
- agno/vectordb/singlestore/singlestore.py +286 -29
- agno/vectordb/surrealdb/surrealdb.py +187 -7
- agno/vectordb/upstashdb/upstashdb.py +342 -26
- agno/vectordb/weaviate/weaviate.py +227 -165
- agno/workflow/__init__.py +17 -13
- agno/workflow/{v2/condition.py → condition.py} +135 -32
- agno/workflow/{v2/loop.py → loop.py} +115 -28
- agno/workflow/{v2/parallel.py → parallel.py} +138 -108
- agno/workflow/{v2/router.py → router.py} +133 -32
- agno/workflow/{v2/step.py → step.py} +200 -42
- agno/workflow/{v2/steps.py → steps.py} +147 -66
- agno/workflow/types.py +482 -0
- agno/workflow/workflow.py +2394 -696
- agno-2.0.0a1.dist-info/METADATA +355 -0
- agno-2.0.0a1.dist-info/RECORD +514 -0
- agno/agent/metrics.py +0 -107
- agno/api/app.py +0 -35
- agno/api/playground.py +0 -92
- agno/api/schemas/app.py +0 -12
- agno/api/schemas/playground.py +0 -22
- agno/api/schemas/user.py +0 -35
- agno/api/schemas/workspace.py +0 -46
- agno/api/user.py +0 -160
- agno/api/workflows.py +0 -33
- agno/api/workspace.py +0 -175
- agno/app/agui/__init__.py +0 -3
- agno/app/agui/app.py +0 -17
- agno/app/agui/sync_router.py +0 -120
- agno/app/base.py +0 -186
- agno/app/discord/__init__.py +0 -3
- agno/app/fastapi/__init__.py +0 -3
- agno/app/fastapi/app.py +0 -107
- agno/app/fastapi/async_router.py +0 -457
- agno/app/fastapi/sync_router.py +0 -448
- agno/app/playground/app.py +0 -228
- agno/app/playground/async_router.py +0 -1050
- agno/app/playground/deploy.py +0 -249
- agno/app/playground/operator.py +0 -183
- agno/app/playground/schemas.py +0 -220
- agno/app/playground/serve.py +0 -55
- agno/app/playground/sync_router.py +0 -1042
- agno/app/playground/utils.py +0 -46
- agno/app/settings.py +0 -15
- agno/app/slack/__init__.py +0 -3
- agno/app/slack/app.py +0 -19
- agno/app/slack/sync_router.py +0 -92
- agno/app/utils.py +0 -54
- agno/app/whatsapp/__init__.py +0 -3
- agno/app/whatsapp/app.py +0 -15
- agno/app/whatsapp/sync_router.py +0 -197
- agno/cli/auth_server.py +0 -249
- agno/cli/config.py +0 -274
- agno/cli/console.py +0 -88
- agno/cli/credentials.py +0 -23
- agno/cli/entrypoint.py +0 -571
- agno/cli/operator.py +0 -357
- agno/cli/settings.py +0 -96
- agno/cli/ws/ws_cli.py +0 -817
- agno/constants.py +0 -13
- agno/document/__init__.py +0 -5
- agno/document/chunking/semantic.py +0 -45
- agno/document/chunking/strategy.py +0 -31
- agno/document/reader/__init__.py +0 -5
- agno/document/reader/base.py +0 -47
- agno/document/reader/docx_reader.py +0 -60
- agno/document/reader/gcs/pdf_reader.py +0 -44
- agno/document/reader/s3/pdf_reader.py +0 -59
- agno/document/reader/s3/text_reader.py +0 -63
- agno/document/reader/url_reader.py +0 -59
- agno/document/reader/youtube_reader.py +0 -58
- agno/embedder/__init__.py +0 -5
- agno/embedder/langdb.py +0 -80
- agno/embedder/mistral.py +0 -82
- agno/embedder/openai.py +0 -78
- agno/file/__init__.py +0 -5
- agno/file/file.py +0 -16
- agno/file/local/csv.py +0 -32
- agno/file/local/txt.py +0 -19
- agno/infra/app.py +0 -240
- agno/infra/base.py +0 -144
- agno/infra/context.py +0 -20
- agno/infra/db_app.py +0 -52
- agno/infra/resource.py +0 -205
- agno/infra/resources.py +0 -55
- agno/knowledge/agent.py +0 -702
- agno/knowledge/arxiv.py +0 -33
- agno/knowledge/combined.py +0 -36
- agno/knowledge/csv.py +0 -144
- agno/knowledge/csv_url.py +0 -124
- agno/knowledge/document.py +0 -223
- agno/knowledge/docx.py +0 -137
- agno/knowledge/firecrawl.py +0 -34
- agno/knowledge/gcs/__init__.py +0 -0
- agno/knowledge/gcs/base.py +0 -39
- agno/knowledge/gcs/pdf.py +0 -125
- agno/knowledge/json.py +0 -137
- agno/knowledge/langchain.py +0 -71
- agno/knowledge/light_rag.py +0 -273
- agno/knowledge/llamaindex.py +0 -66
- agno/knowledge/markdown.py +0 -154
- agno/knowledge/pdf.py +0 -164
- agno/knowledge/pdf_bytes.py +0 -42
- agno/knowledge/pdf_url.py +0 -148
- agno/knowledge/s3/__init__.py +0 -0
- agno/knowledge/s3/base.py +0 -64
- agno/knowledge/s3/pdf.py +0 -33
- agno/knowledge/s3/text.py +0 -34
- agno/knowledge/text.py +0 -141
- agno/knowledge/url.py +0 -46
- agno/knowledge/website.py +0 -179
- agno/knowledge/wikipedia.py +0 -32
- agno/knowledge/youtube.py +0 -35
- agno/memory/agent.py +0 -423
- agno/memory/classifier.py +0 -104
- agno/memory/db/__init__.py +0 -5
- agno/memory/db/base.py +0 -42
- agno/memory/db/mongodb.py +0 -189
- agno/memory/db/postgres.py +0 -203
- agno/memory/db/sqlite.py +0 -193
- agno/memory/memory.py +0 -22
- agno/memory/row.py +0 -36
- agno/memory/summarizer.py +0 -201
- agno/memory/summary.py +0 -19
- agno/memory/team.py +0 -415
- agno/memory/v2/__init__.py +0 -2
- agno/memory/v2/db/__init__.py +0 -1
- agno/memory/v2/db/base.py +0 -42
- agno/memory/v2/db/firestore.py +0 -339
- agno/memory/v2/db/mongodb.py +0 -196
- agno/memory/v2/db/postgres.py +0 -214
- agno/memory/v2/db/redis.py +0 -187
- agno/memory/v2/db/schema.py +0 -54
- agno/memory/v2/db/sqlite.py +0 -209
- agno/memory/v2/manager.py +0 -437
- agno/memory/v2/memory.py +0 -1097
- agno/memory/v2/schema.py +0 -55
- agno/memory/v2/summarizer.py +0 -215
- agno/memory/workflow.py +0 -38
- agno/models/ollama/tools.py +0 -430
- agno/models/qwen/__init__.py +0 -5
- agno/playground/__init__.py +0 -10
- agno/playground/deploy.py +0 -3
- agno/playground/playground.py +0 -3
- agno/playground/serve.py +0 -3
- agno/playground/settings.py +0 -3
- agno/reranker/__init__.py +0 -0
- agno/run/v2/__init__.py +0 -0
- agno/run/v2/workflow.py +0 -567
- agno/storage/__init__.py +0 -0
- agno/storage/agent/__init__.py +0 -0
- agno/storage/agent/dynamodb.py +0 -1
- agno/storage/agent/json.py +0 -1
- agno/storage/agent/mongodb.py +0 -1
- agno/storage/agent/postgres.py +0 -1
- agno/storage/agent/singlestore.py +0 -1
- agno/storage/agent/sqlite.py +0 -1
- agno/storage/agent/yaml.py +0 -1
- agno/storage/base.py +0 -60
- agno/storage/dynamodb.py +0 -673
- agno/storage/firestore.py +0 -297
- agno/storage/gcs_json.py +0 -261
- agno/storage/in_memory.py +0 -234
- agno/storage/json.py +0 -237
- agno/storage/mongodb.py +0 -328
- agno/storage/mysql.py +0 -685
- agno/storage/postgres.py +0 -682
- agno/storage/redis.py +0 -336
- agno/storage/session/__init__.py +0 -16
- agno/storage/session/agent.py +0 -64
- agno/storage/session/team.py +0 -63
- agno/storage/session/v2/__init__.py +0 -5
- agno/storage/session/workflow.py +0 -61
- agno/storage/singlestore.py +0 -606
- agno/storage/sqlite.py +0 -646
- agno/storage/workflow/__init__.py +0 -0
- agno/storage/workflow/mongodb.py +0 -1
- agno/storage/workflow/postgres.py +0 -1
- agno/storage/workflow/sqlite.py +0 -1
- agno/storage/yaml.py +0 -241
- agno/tools/thinking.py +0 -73
- agno/utils/defaults.py +0 -57
- agno/utils/filesystem.py +0 -39
- agno/utils/git.py +0 -52
- agno/utils/json_io.py +0 -30
- agno/utils/load_env.py +0 -19
- agno/utils/py_io.py +0 -19
- agno/utils/pyproject.py +0 -18
- agno/utils/resource_filter.py +0 -31
- agno/workflow/v2/__init__.py +0 -21
- agno/workflow/v2/types.py +0 -357
- agno/workflow/v2/workflow.py +0 -3312
- agno/workspace/__init__.py +0 -0
- agno/workspace/config.py +0 -325
- agno/workspace/enums.py +0 -6
- agno/workspace/helpers.py +0 -52
- agno/workspace/operator.py +0 -757
- agno/workspace/settings.py +0 -158
- agno-1.8.1.dist-info/METADATA +0 -982
- agno-1.8.1.dist-info/RECORD +0 -566
- agno-1.8.1.dist-info/entry_points.txt +0 -3
- /agno/{app → db/migrations}/__init__.py +0 -0
- /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
- /agno/{cli → integrations}/__init__.py +0 -0
- /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
- /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
- /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
- /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
- /agno/{app → os/interfaces}/slack/security.py +0 -0
- /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
- /agno/{file/local → utils/print_response}/__init__.py +0 -0
- /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
- {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/WHEEL +0 -0
- {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/licenses/LICENSE +0 -0
- {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/top_level.txt +0 -0
agno/app/agui/sync_router.py
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"""Async router handling exposing an Agno Agent or Team in an AG-UI compatible format."""
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
import uuid
|
|
5
|
-
from typing import Iterator, Optional
|
|
6
|
-
|
|
7
|
-
from ag_ui.core import (
|
|
8
|
-
BaseEvent,
|
|
9
|
-
EventType,
|
|
10
|
-
RunAgentInput,
|
|
11
|
-
RunErrorEvent,
|
|
12
|
-
RunStartedEvent,
|
|
13
|
-
)
|
|
14
|
-
from ag_ui.encoder import EventEncoder
|
|
15
|
-
from fastapi import APIRouter
|
|
16
|
-
from fastapi.responses import StreamingResponse
|
|
17
|
-
|
|
18
|
-
from agno.agent.agent import Agent
|
|
19
|
-
from agno.app.agui.utils import convert_agui_messages_to_agno_messages, stream_agno_response_as_agui_events
|
|
20
|
-
from agno.team.team import Team
|
|
21
|
-
|
|
22
|
-
logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def run_agent(agent: Agent, run_input: RunAgentInput) -> Iterator[BaseEvent]:
|
|
26
|
-
"""Run the contextual Agent, mapping AG-UI input messages to Agno format, and streaming the response in AG-UI format."""
|
|
27
|
-
run_id = run_input.run_id or str(uuid.uuid4())
|
|
28
|
-
|
|
29
|
-
try:
|
|
30
|
-
# Preparing the input for the Agent and emitting the run started event
|
|
31
|
-
messages = convert_agui_messages_to_agno_messages(run_input.messages or [])
|
|
32
|
-
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=run_input.thread_id, run_id=run_id)
|
|
33
|
-
|
|
34
|
-
# Request streaming response from agent
|
|
35
|
-
response_stream = agent.run(
|
|
36
|
-
messages=messages,
|
|
37
|
-
session_id=run_input.thread_id,
|
|
38
|
-
stream=True,
|
|
39
|
-
stream_intermediate_steps=True,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
# Stream the response content in AG-UI format
|
|
43
|
-
for event in stream_agno_response_as_agui_events(
|
|
44
|
-
response_stream=response_stream, thread_id=run_input.thread_id, run_id=run_id
|
|
45
|
-
):
|
|
46
|
-
yield event
|
|
47
|
-
|
|
48
|
-
# Emit a RunErrorEvent if any error occurs
|
|
49
|
-
except Exception as e:
|
|
50
|
-
logger.error(f"Error running agent: {e}", exc_info=True)
|
|
51
|
-
yield RunErrorEvent(type=EventType.RUN_ERROR, message=str(e))
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def run_team(team: Team, input: RunAgentInput) -> Iterator[BaseEvent]:
|
|
55
|
-
"""Run the contextual Team, mapping AG-UI input messages to Agno format, and streaming the response in AG-UI format."""
|
|
56
|
-
run_id = input.run_id or str(uuid.uuid4())
|
|
57
|
-
try:
|
|
58
|
-
# Extract the last user message for team execution
|
|
59
|
-
messages = convert_agui_messages_to_agno_messages(input.messages or [])
|
|
60
|
-
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=input.thread_id, run_id=run_id)
|
|
61
|
-
|
|
62
|
-
# Request streaming response from team
|
|
63
|
-
response_stream = team.run(
|
|
64
|
-
message=messages,
|
|
65
|
-
session_id=input.thread_id,
|
|
66
|
-
stream=True,
|
|
67
|
-
stream_intermediate_steps=True,
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
# Stream the response content in AG-UI format
|
|
71
|
-
for event in stream_agno_response_as_agui_events(
|
|
72
|
-
response_stream=response_stream, thread_id=input.thread_id, run_id=run_id
|
|
73
|
-
):
|
|
74
|
-
yield event
|
|
75
|
-
|
|
76
|
-
except Exception as e:
|
|
77
|
-
logger.error(f"Error running team: {e}", exc_info=True)
|
|
78
|
-
yield RunErrorEvent(type=EventType.RUN_ERROR, message=str(e))
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def get_sync_agui_router(agent: Optional[Agent] = None, team: Optional[Team] = None) -> APIRouter:
|
|
82
|
-
"""Return an AG-UI compatible FastAPI router."""
|
|
83
|
-
if (agent is None and team is None) or (agent is not None and team is not None):
|
|
84
|
-
raise ValueError("One of 'agent' or 'team' must be provided.")
|
|
85
|
-
|
|
86
|
-
router = APIRouter()
|
|
87
|
-
encoder = EventEncoder()
|
|
88
|
-
|
|
89
|
-
def _run(run_input: RunAgentInput):
|
|
90
|
-
def event_generator():
|
|
91
|
-
if agent:
|
|
92
|
-
for event in run_agent(agent, run_input):
|
|
93
|
-
encoded_event = encoder.encode(event)
|
|
94
|
-
yield encoded_event
|
|
95
|
-
elif team:
|
|
96
|
-
for event in run_team(team, run_input):
|
|
97
|
-
encoded_event = encoder.encode(event)
|
|
98
|
-
yield encoded_event
|
|
99
|
-
|
|
100
|
-
return StreamingResponse(
|
|
101
|
-
event_generator(),
|
|
102
|
-
media_type="text/event-stream",
|
|
103
|
-
headers={
|
|
104
|
-
"Cache-Control": "no-cache",
|
|
105
|
-
"Connection": "keep-alive",
|
|
106
|
-
"Access-Control-Allow-Origin": "*",
|
|
107
|
-
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
|
|
108
|
-
"Access-Control-Allow-Headers": "*",
|
|
109
|
-
},
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
@router.post("/agui")
|
|
113
|
-
def run_agent_agui(run_input: RunAgentInput):
|
|
114
|
-
return _run(run_input)
|
|
115
|
-
|
|
116
|
-
@router.get("/status")
|
|
117
|
-
def get_status():
|
|
118
|
-
return {"status": "available"}
|
|
119
|
-
|
|
120
|
-
return router
|
agno/app/base.py
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
from abc import ABC, abstractmethod
|
|
2
|
-
from os import getenv
|
|
3
|
-
from typing import Any, Dict, Optional, Union
|
|
4
|
-
from uuid import uuid4
|
|
5
|
-
|
|
6
|
-
import uvicorn
|
|
7
|
-
from fastapi import FastAPI, HTTPException, Request
|
|
8
|
-
from fastapi.responses import JSONResponse
|
|
9
|
-
from fastapi.routing import APIRouter
|
|
10
|
-
from starlette.middleware.cors import CORSMiddleware
|
|
11
|
-
|
|
12
|
-
from agno.agent.agent import Agent
|
|
13
|
-
from agno.api.app import AppCreate, create_app
|
|
14
|
-
from agno.app.settings import APIAppSettings
|
|
15
|
-
from agno.team.team import Team
|
|
16
|
-
from agno.utils.log import log_debug, log_info
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class BaseAPIApp(ABC):
|
|
20
|
-
type: Optional[str] = None
|
|
21
|
-
|
|
22
|
-
def __init__(
|
|
23
|
-
self,
|
|
24
|
-
agent: Optional[Agent] = None,
|
|
25
|
-
team: Optional[Team] = None,
|
|
26
|
-
settings: Optional[APIAppSettings] = None,
|
|
27
|
-
api_app: Optional[FastAPI] = None,
|
|
28
|
-
router: Optional[APIRouter] = None,
|
|
29
|
-
monitoring: bool = True,
|
|
30
|
-
app_id: Optional[str] = None,
|
|
31
|
-
name: Optional[str] = None,
|
|
32
|
-
description: Optional[str] = None,
|
|
33
|
-
version: Optional[str] = None,
|
|
34
|
-
):
|
|
35
|
-
if not agent and not team:
|
|
36
|
-
raise ValueError("Either agent or team must be provided.")
|
|
37
|
-
|
|
38
|
-
if agent and team:
|
|
39
|
-
raise ValueError("Only one of agent or team can be provided.")
|
|
40
|
-
|
|
41
|
-
self.agent: Optional[Agent] = agent
|
|
42
|
-
self.team: Optional[Team] = team
|
|
43
|
-
self.settings: APIAppSettings = settings or APIAppSettings()
|
|
44
|
-
self.api_app: Optional[FastAPI] = api_app
|
|
45
|
-
self.router: Optional[APIRouter] = router
|
|
46
|
-
self.monitoring = monitoring
|
|
47
|
-
self.app_id: Optional[str] = app_id
|
|
48
|
-
self.name: Optional[str] = name
|
|
49
|
-
self.description = description
|
|
50
|
-
self.version = version
|
|
51
|
-
self.set_app_id()
|
|
52
|
-
|
|
53
|
-
if self.agent:
|
|
54
|
-
if not self.agent.app_id:
|
|
55
|
-
self.agent.app_id = self.app_id
|
|
56
|
-
self.agent.initialize_agent()
|
|
57
|
-
|
|
58
|
-
if self.team:
|
|
59
|
-
if not self.team.app_id:
|
|
60
|
-
self.team.app_id = self.app_id
|
|
61
|
-
self.team.initialize_team()
|
|
62
|
-
for member in self.team.members:
|
|
63
|
-
if isinstance(member, Agent):
|
|
64
|
-
if not member.app_id:
|
|
65
|
-
member.app_id = self.app_id
|
|
66
|
-
member.team_id = None
|
|
67
|
-
member.initialize_agent()
|
|
68
|
-
elif isinstance(member, Team):
|
|
69
|
-
member.initialize_team()
|
|
70
|
-
|
|
71
|
-
def set_app_id(self) -> str:
|
|
72
|
-
# If app_id is already set, keep it instead of overriding with UUID
|
|
73
|
-
if self.app_id is None:
|
|
74
|
-
self.app_id = str(uuid4())
|
|
75
|
-
|
|
76
|
-
# Don't override existing app_id
|
|
77
|
-
return self.app_id
|
|
78
|
-
|
|
79
|
-
def _set_monitoring(self) -> None:
|
|
80
|
-
monitor_env = getenv("AGNO_MONITOR")
|
|
81
|
-
if monitor_env is not None:
|
|
82
|
-
self.monitoring = monitor_env.lower() == "true"
|
|
83
|
-
|
|
84
|
-
@abstractmethod
|
|
85
|
-
def get_router(self) -> APIRouter:
|
|
86
|
-
raise NotImplementedError("get_router must be implemented")
|
|
87
|
-
|
|
88
|
-
@abstractmethod
|
|
89
|
-
def get_async_router(self) -> APIRouter:
|
|
90
|
-
raise NotImplementedError("get_async_router must be implemented")
|
|
91
|
-
|
|
92
|
-
def get_app(self, use_async: bool = True, prefix: str = "") -> FastAPI:
|
|
93
|
-
if not self.api_app:
|
|
94
|
-
kwargs = {
|
|
95
|
-
"title": self.settings.title,
|
|
96
|
-
}
|
|
97
|
-
if self.version:
|
|
98
|
-
kwargs["version"] = self.version
|
|
99
|
-
if self.settings.docs_enabled:
|
|
100
|
-
kwargs["docs_url"] = "/docs"
|
|
101
|
-
kwargs["redoc_url"] = "/redoc"
|
|
102
|
-
kwargs["openapi_url"] = "/openapi.json"
|
|
103
|
-
|
|
104
|
-
self.api_app = FastAPI(
|
|
105
|
-
**kwargs, # type: ignore
|
|
106
|
-
)
|
|
107
|
-
|
|
108
|
-
if not self.api_app:
|
|
109
|
-
raise Exception("API App could not be created.")
|
|
110
|
-
|
|
111
|
-
@self.api_app.exception_handler(HTTPException)
|
|
112
|
-
async def http_exception_handler(request: Request, exc: HTTPException) -> JSONResponse:
|
|
113
|
-
return JSONResponse(
|
|
114
|
-
status_code=exc.status_code,
|
|
115
|
-
content={"detail": str(exc.detail)},
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
async def general_exception_handler(request: Request, call_next):
|
|
119
|
-
try:
|
|
120
|
-
return await call_next(request)
|
|
121
|
-
except Exception as e:
|
|
122
|
-
return JSONResponse(
|
|
123
|
-
status_code=e.status_code if hasattr(e, "status_code") else 500,
|
|
124
|
-
content={"detail": str(e)},
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
self.api_app.middleware("http")(general_exception_handler)
|
|
128
|
-
|
|
129
|
-
if not self.router:
|
|
130
|
-
self.router = APIRouter(prefix=prefix)
|
|
131
|
-
|
|
132
|
-
if not self.router:
|
|
133
|
-
raise Exception("API Router could not be created.")
|
|
134
|
-
|
|
135
|
-
if use_async:
|
|
136
|
-
self.router.include_router(self.get_async_router())
|
|
137
|
-
else:
|
|
138
|
-
self.router.include_router(self.get_router())
|
|
139
|
-
|
|
140
|
-
self.api_app.include_router(self.router)
|
|
141
|
-
|
|
142
|
-
self.api_app.add_middleware(
|
|
143
|
-
CORSMiddleware,
|
|
144
|
-
allow_origins=["*"],
|
|
145
|
-
allow_credentials=True,
|
|
146
|
-
allow_methods=["*"],
|
|
147
|
-
allow_headers=["*"],
|
|
148
|
-
expose_headers=["*"],
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
return self.api_app
|
|
152
|
-
|
|
153
|
-
def serve(
|
|
154
|
-
self,
|
|
155
|
-
app: Union[str, FastAPI],
|
|
156
|
-
*,
|
|
157
|
-
host: str = "localhost",
|
|
158
|
-
port: int = 7777,
|
|
159
|
-
reload: bool = False,
|
|
160
|
-
**kwargs,
|
|
161
|
-
):
|
|
162
|
-
self.set_app_id()
|
|
163
|
-
self.register_app_on_platform()
|
|
164
|
-
log_info(f"Starting API on {host}:{port}")
|
|
165
|
-
|
|
166
|
-
uvicorn.run(app=app, host=host, port=port, reload=reload, **kwargs)
|
|
167
|
-
|
|
168
|
-
def register_app_on_platform(self) -> None:
|
|
169
|
-
self._set_monitoring()
|
|
170
|
-
if not self.monitoring:
|
|
171
|
-
return
|
|
172
|
-
|
|
173
|
-
try:
|
|
174
|
-
log_debug(f"Creating app on Platform: {self.name}, {self.app_id}")
|
|
175
|
-
create_app(app=AppCreate(name=self.name, app_id=self.app_id, config=self.to_dict()))
|
|
176
|
-
except Exception as e:
|
|
177
|
-
log_debug(f"Could not create Agent app: {e}")
|
|
178
|
-
log_debug(f"Agent app created: {self.name}, {self.app_id}")
|
|
179
|
-
|
|
180
|
-
def to_dict(self) -> Dict[str, Any]:
|
|
181
|
-
payload = {
|
|
182
|
-
"type": self.type,
|
|
183
|
-
"description": self.description,
|
|
184
|
-
}
|
|
185
|
-
payload = {k: v for k, v in payload.items() if v is not None}
|
|
186
|
-
return payload
|
agno/app/discord/__init__.py
DELETED
agno/app/fastapi/__init__.py
DELETED
agno/app/fastapi/app.py
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import List, Optional, Union
|
|
3
|
-
|
|
4
|
-
import uvicorn
|
|
5
|
-
from fastapi import FastAPI
|
|
6
|
-
from fastapi.routing import APIRouter
|
|
7
|
-
|
|
8
|
-
from agno.agent.agent import Agent
|
|
9
|
-
from agno.app.base import BaseAPIApp
|
|
10
|
-
from agno.app.fastapi.async_router import get_async_router
|
|
11
|
-
from agno.app.fastapi.sync_router import get_sync_router
|
|
12
|
-
from agno.app.settings import APIAppSettings
|
|
13
|
-
from agno.app.utils import generate_id
|
|
14
|
-
from agno.team.team import Team
|
|
15
|
-
from agno.utils.log import log_info
|
|
16
|
-
from agno.workflow.workflow import Workflow
|
|
17
|
-
|
|
18
|
-
logger = logging.getLogger(__name__)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class FastAPIApp(BaseAPIApp):
|
|
22
|
-
type = "fastapi"
|
|
23
|
-
|
|
24
|
-
def __init__(
|
|
25
|
-
self,
|
|
26
|
-
agents: Optional[List[Agent]] = None,
|
|
27
|
-
teams: Optional[List[Team]] = None,
|
|
28
|
-
workflows: Optional[List[Workflow]] = None,
|
|
29
|
-
settings: Optional[APIAppSettings] = None,
|
|
30
|
-
api_app: Optional[FastAPI] = None,
|
|
31
|
-
router: Optional[APIRouter] = None,
|
|
32
|
-
app_id: Optional[str] = None,
|
|
33
|
-
name: Optional[str] = None,
|
|
34
|
-
description: Optional[str] = None,
|
|
35
|
-
version: Optional[str] = None,
|
|
36
|
-
monitoring: bool = True,
|
|
37
|
-
):
|
|
38
|
-
if not agents and not teams and not workflows:
|
|
39
|
-
raise ValueError("Either agents, teams or workflows must be provided.")
|
|
40
|
-
|
|
41
|
-
self.agents: Optional[List[Agent]] = agents
|
|
42
|
-
self.teams: Optional[List[Team]] = teams
|
|
43
|
-
self.workflows: Optional[List[Workflow]] = workflows
|
|
44
|
-
|
|
45
|
-
self.settings: APIAppSettings = settings or APIAppSettings()
|
|
46
|
-
self.api_app: Optional[FastAPI] = api_app
|
|
47
|
-
self.router: Optional[APIRouter] = router
|
|
48
|
-
|
|
49
|
-
self.app_id: Optional[str] = app_id
|
|
50
|
-
self.name: Optional[str] = name
|
|
51
|
-
self.monitoring = monitoring
|
|
52
|
-
self.description = description
|
|
53
|
-
self.version = version
|
|
54
|
-
|
|
55
|
-
self.set_app_id()
|
|
56
|
-
|
|
57
|
-
if self.agents:
|
|
58
|
-
for agent in self.agents:
|
|
59
|
-
if not agent.app_id:
|
|
60
|
-
agent.app_id = self.app_id
|
|
61
|
-
agent.initialize_agent()
|
|
62
|
-
|
|
63
|
-
if self.teams:
|
|
64
|
-
for team in self.teams:
|
|
65
|
-
if not team.app_id:
|
|
66
|
-
team.app_id = self.app_id
|
|
67
|
-
team.initialize_team()
|
|
68
|
-
for member in team.members:
|
|
69
|
-
if isinstance(member, Agent):
|
|
70
|
-
if not member.app_id:
|
|
71
|
-
member.app_id = self.app_id
|
|
72
|
-
|
|
73
|
-
member.team_id = None
|
|
74
|
-
member.initialize_agent()
|
|
75
|
-
elif isinstance(member, Team):
|
|
76
|
-
member.initialize_team()
|
|
77
|
-
|
|
78
|
-
if self.workflows:
|
|
79
|
-
for workflow in self.workflows:
|
|
80
|
-
if hasattr(workflow, "app_id") and not workflow.app_id:
|
|
81
|
-
workflow.app_id = self.app_id
|
|
82
|
-
if not workflow.workflow_id:
|
|
83
|
-
workflow.workflow_id = generate_id(workflow.name)
|
|
84
|
-
workflow.initialize_workflow()
|
|
85
|
-
|
|
86
|
-
def get_router(self) -> APIRouter:
|
|
87
|
-
return get_sync_router(agents=self.agents, teams=self.teams, workflows=self.workflows)
|
|
88
|
-
|
|
89
|
-
def get_async_router(self) -> APIRouter:
|
|
90
|
-
return get_async_router(agents=self.agents, teams=self.teams, workflows=self.workflows)
|
|
91
|
-
|
|
92
|
-
def serve(
|
|
93
|
-
self,
|
|
94
|
-
app: Union[str, FastAPI],
|
|
95
|
-
*,
|
|
96
|
-
host: str = "localhost",
|
|
97
|
-
port: int = 7777,
|
|
98
|
-
reload: bool = False,
|
|
99
|
-
workers: Optional[int] = None,
|
|
100
|
-
**kwargs,
|
|
101
|
-
):
|
|
102
|
-
self.set_app_id()
|
|
103
|
-
self.register_app_on_platform()
|
|
104
|
-
|
|
105
|
-
log_info(f"Starting API on {host}:{port}")
|
|
106
|
-
|
|
107
|
-
uvicorn.run(app=app, host=host, port=port, reload=reload, workers=workers, **kwargs)
|