aip-agents-binary 0.6.4__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.
Potentially problematic release.
This version of aip-agents-binary might be problematic. Click here for more details.
- aip_agents/__init__.py +65 -0
- aip_agents/__init__.pyi +19 -0
- aip_agents/a2a/__init__.py +19 -0
- aip_agents/a2a/__init__.pyi +3 -0
- aip_agents/a2a/server/__init__.py +10 -0
- aip_agents/a2a/server/__init__.pyi +4 -0
- aip_agents/a2a/server/base_executor.py +1086 -0
- aip_agents/a2a/server/base_executor.pyi +73 -0
- aip_agents/a2a/server/google_adk_executor.py +198 -0
- aip_agents/a2a/server/google_adk_executor.pyi +51 -0
- aip_agents/a2a/server/langflow_executor.py +180 -0
- aip_agents/a2a/server/langflow_executor.pyi +43 -0
- aip_agents/a2a/server/langgraph_executor.py +270 -0
- aip_agents/a2a/server/langgraph_executor.pyi +47 -0
- aip_agents/a2a/types.py +232 -0
- aip_agents/a2a/types.pyi +132 -0
- aip_agents/agent/__init__.py +27 -0
- aip_agents/agent/__init__.pyi +9 -0
- aip_agents/agent/base_agent.py +970 -0
- aip_agents/agent/base_agent.pyi +221 -0
- aip_agents/agent/base_langgraph_agent.py +3037 -0
- aip_agents/agent/base_langgraph_agent.pyi +233 -0
- aip_agents/agent/google_adk_agent.py +926 -0
- aip_agents/agent/google_adk_agent.pyi +141 -0
- aip_agents/agent/google_adk_constants.py +6 -0
- aip_agents/agent/google_adk_constants.pyi +3 -0
- aip_agents/agent/hitl/__init__.py +24 -0
- aip_agents/agent/hitl/__init__.pyi +6 -0
- aip_agents/agent/hitl/config.py +28 -0
- aip_agents/agent/hitl/config.pyi +15 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
- aip_agents/agent/hitl/manager.py +532 -0
- aip_agents/agent/hitl/manager.pyi +200 -0
- aip_agents/agent/hitl/models.py +18 -0
- aip_agents/agent/hitl/models.pyi +3 -0
- aip_agents/agent/hitl/prompt/__init__.py +9 -0
- aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
- aip_agents/agent/hitl/prompt/base.py +42 -0
- aip_agents/agent/hitl/prompt/base.pyi +24 -0
- aip_agents/agent/hitl/prompt/deferred.py +73 -0
- aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
- aip_agents/agent/hitl/registry.py +149 -0
- aip_agents/agent/hitl/registry.pyi +101 -0
- aip_agents/agent/interface.py +138 -0
- aip_agents/agent/interface.pyi +81 -0
- aip_agents/agent/interfaces.py +65 -0
- aip_agents/agent/interfaces.pyi +44 -0
- aip_agents/agent/langflow_agent.py +464 -0
- aip_agents/agent/langflow_agent.pyi +133 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.py +767 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.pyi +50 -0
- aip_agents/agent/langgraph_react_agent.py +2856 -0
- aip_agents/agent/langgraph_react_agent.pyi +170 -0
- aip_agents/agent/system_instruction_context.py +34 -0
- aip_agents/agent/system_instruction_context.pyi +13 -0
- aip_agents/clients/__init__.py +10 -0
- aip_agents/clients/__init__.pyi +4 -0
- aip_agents/clients/langflow/__init__.py +10 -0
- aip_agents/clients/langflow/__init__.pyi +4 -0
- aip_agents/clients/langflow/client.py +477 -0
- aip_agents/clients/langflow/client.pyi +140 -0
- aip_agents/clients/langflow/types.py +18 -0
- aip_agents/clients/langflow/types.pyi +7 -0
- aip_agents/constants.py +23 -0
- aip_agents/constants.pyi +7 -0
- aip_agents/credentials/manager.py +132 -0
- aip_agents/examples/__init__.py +5 -0
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/compare_streaming_client.py +783 -0
- aip_agents/examples/compare_streaming_client.pyi +48 -0
- aip_agents/examples/compare_streaming_server.py +142 -0
- aip_agents/examples/compare_streaming_server.pyi +18 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
- aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
- aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_google_adk.py +41 -0
- aip_agents/examples/hello_world_google_adk.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_stream.py +44 -0
- aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain.py +28 -0
- aip_agents/examples/hello_world_langchain.pyi +5 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream.py +36 -0
- aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_langflow_agent.py +163 -0
- aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
- aip_agents/examples/hello_world_langgraph.py +39 -0
- aip_agents/examples/hello_world_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py +44 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream.py +43 -0
- aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_model_switch_cli.py +210 -0
- aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
- aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
- aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
- aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
- aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_pii_logger.py +21 -0
- aip_agents/examples/hello_world_pii_logger.pyi +5 -0
- aip_agents/examples/hello_world_ptc.py +49 -0
- aip_agents/examples/hello_world_ptc.pyi +5 -0
- aip_agents/examples/hello_world_sentry.py +133 -0
- aip_agents/examples/hello_world_sentry.pyi +21 -0
- aip_agents/examples/hello_world_step_limits.py +273 -0
- aip_agents/examples/hello_world_step_limits.pyi +17 -0
- aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
- aip_agents/examples/hello_world_stock_a2a_server.pyi +17 -0
- aip_agents/examples/hello_world_tool_output_client.py +55 -0
- aip_agents/examples/hello_world_tool_output_client.pyi +5 -0
- aip_agents/examples/hello_world_tool_output_server.py +114 -0
- aip_agents/examples/hello_world_tool_output_server.pyi +19 -0
- aip_agents/examples/hitl_demo.py +724 -0
- aip_agents/examples/hitl_demo.pyi +67 -0
- aip_agents/examples/mcp_configs/configs.py +63 -0
- aip_agents/examples/mcp_servers/common.py +76 -0
- aip_agents/examples/mcp_servers/mcp_name.py +29 -0
- aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
- aip_agents/examples/mcp_servers/mcp_time.py +10 -0
- aip_agents/examples/pii_demo_langgraph_client.py +69 -0
- aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
- aip_agents/examples/pii_demo_langgraph_server.py +126 -0
- aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
- aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
- aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
- aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
- aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
- aip_agents/examples/tools/__init__.py +27 -0
- aip_agents/examples/tools/__init__.pyi +9 -0
- aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
- aip_agents/examples/tools/adk_arithmetic_tools.pyi +24 -0
- aip_agents/examples/tools/adk_weather_tool.py +60 -0
- aip_agents/examples/tools/adk_weather_tool.pyi +18 -0
- aip_agents/examples/tools/data_generator_tool.py +103 -0
- aip_agents/examples/tools/data_generator_tool.pyi +15 -0
- aip_agents/examples/tools/data_visualization_tool.py +312 -0
- aip_agents/examples/tools/data_visualization_tool.pyi +19 -0
- aip_agents/examples/tools/image_artifact_tool.py +136 -0
- aip_agents/examples/tools/image_artifact_tool.pyi +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +17 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +20 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +25 -0
- aip_agents/examples/tools/langchain_weather_tool.py +48 -0
- aip_agents/examples/tools/langchain_weather_tool.pyi +19 -0
- aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +43 -0
- aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
- aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
- aip_agents/examples/tools/pii_demo_tools.py +189 -0
- aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
- aip_agents/examples/tools/random_chart_tool.py +142 -0
- aip_agents/examples/tools/random_chart_tool.pyi +20 -0
- aip_agents/examples/tools/serper_tool.py +202 -0
- aip_agents/examples/tools/serper_tool.pyi +16 -0
- aip_agents/examples/tools/stock_tools.py +82 -0
- aip_agents/examples/tools/stock_tools.pyi +36 -0
- aip_agents/examples/tools/table_generator_tool.py +167 -0
- aip_agents/examples/tools/table_generator_tool.pyi +22 -0
- aip_agents/examples/tools/time_tool.py +82 -0
- aip_agents/examples/tools/time_tool.pyi +15 -0
- aip_agents/examples/tools/weather_forecast_tool.py +38 -0
- aip_agents/examples/tools/weather_forecast_tool.pyi +14 -0
- aip_agents/executor/agent_executor.py +473 -0
- aip_agents/executor/base.py +48 -0
- aip_agents/guardrails/__init__.py +83 -0
- aip_agents/guardrails/__init__.pyi +6 -0
- aip_agents/guardrails/engines/__init__.py +69 -0
- aip_agents/guardrails/engines/__init__.pyi +4 -0
- aip_agents/guardrails/engines/base.py +90 -0
- aip_agents/guardrails/engines/base.pyi +61 -0
- aip_agents/guardrails/engines/nemo.py +101 -0
- aip_agents/guardrails/engines/nemo.pyi +46 -0
- aip_agents/guardrails/engines/phrase_matcher.py +113 -0
- aip_agents/guardrails/engines/phrase_matcher.pyi +48 -0
- aip_agents/guardrails/exceptions.py +39 -0
- aip_agents/guardrails/exceptions.pyi +23 -0
- aip_agents/guardrails/manager.py +163 -0
- aip_agents/guardrails/manager.pyi +42 -0
- aip_agents/guardrails/middleware.py +199 -0
- aip_agents/guardrails/middleware.pyi +87 -0
- aip_agents/guardrails/schemas.py +63 -0
- aip_agents/guardrails/schemas.pyi +43 -0
- aip_agents/guardrails/utils.py +45 -0
- aip_agents/guardrails/utils.pyi +19 -0
- aip_agents/mcp/__init__.py +1 -0
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.py +14 -0
- aip_agents/mcp/client/__init__.pyi +5 -0
- aip_agents/mcp/client/base_mcp_client.py +369 -0
- aip_agents/mcp/client/base_mcp_client.pyi +148 -0
- aip_agents/mcp/client/connection_manager.py +228 -0
- aip_agents/mcp/client/connection_manager.pyi +51 -0
- aip_agents/mcp/client/google_adk/__init__.py +11 -0
- aip_agents/mcp/client/google_adk/__init__.pyi +3 -0
- aip_agents/mcp/client/google_adk/client.py +381 -0
- aip_agents/mcp/client/google_adk/client.pyi +75 -0
- aip_agents/mcp/client/langchain/__init__.py +11 -0
- aip_agents/mcp/client/langchain/__init__.pyi +3 -0
- aip_agents/mcp/client/langchain/client.py +265 -0
- aip_agents/mcp/client/langchain/client.pyi +48 -0
- aip_agents/mcp/client/persistent_session.py +612 -0
- aip_agents/mcp/client/persistent_session.pyi +122 -0
- aip_agents/mcp/client/session_pool.py +351 -0
- aip_agents/mcp/client/session_pool.pyi +101 -0
- aip_agents/mcp/client/transports.py +263 -0
- aip_agents/mcp/client/transports.pyi +132 -0
- aip_agents/mcp/utils/__init__.py +7 -0
- aip_agents/mcp/utils/__init__.pyi +0 -0
- aip_agents/mcp/utils/config_validator.py +139 -0
- aip_agents/mcp/utils/config_validator.pyi +82 -0
- aip_agents/memory/__init__.py +14 -0
- aip_agents/memory/__init__.pyi +5 -0
- aip_agents/memory/adapters/__init__.py +10 -0
- aip_agents/memory/adapters/__init__.pyi +4 -0
- aip_agents/memory/adapters/base_adapter.py +811 -0
- aip_agents/memory/adapters/base_adapter.pyi +176 -0
- aip_agents/memory/adapters/mem0.py +84 -0
- aip_agents/memory/adapters/mem0.pyi +22 -0
- aip_agents/memory/base.py +84 -0
- aip_agents/memory/base.pyi +60 -0
- aip_agents/memory/constants.py +49 -0
- aip_agents/memory/constants.pyi +25 -0
- aip_agents/memory/factory.py +86 -0
- aip_agents/memory/factory.pyi +24 -0
- aip_agents/memory/guidance.py +20 -0
- aip_agents/memory/guidance.pyi +3 -0
- aip_agents/memory/simple_memory.py +47 -0
- aip_agents/memory/simple_memory.pyi +23 -0
- aip_agents/middleware/__init__.py +17 -0
- aip_agents/middleware/__init__.pyi +5 -0
- aip_agents/middleware/base.py +96 -0
- aip_agents/middleware/base.pyi +75 -0
- aip_agents/middleware/manager.py +150 -0
- aip_agents/middleware/manager.pyi +84 -0
- aip_agents/middleware/todolist.py +274 -0
- aip_agents/middleware/todolist.pyi +125 -0
- aip_agents/ptc/__init__.py +48 -0
- aip_agents/ptc/__init__.pyi +10 -0
- aip_agents/ptc/doc_gen.py +122 -0
- aip_agents/ptc/doc_gen.pyi +40 -0
- aip_agents/ptc/exceptions.py +39 -0
- aip_agents/ptc/exceptions.pyi +22 -0
- aip_agents/ptc/executor.py +143 -0
- aip_agents/ptc/executor.pyi +73 -0
- aip_agents/ptc/mcp/__init__.py +45 -0
- aip_agents/ptc/mcp/__init__.pyi +7 -0
- aip_agents/ptc/mcp/sandbox_bridge.py +668 -0
- aip_agents/ptc/mcp/sandbox_bridge.pyi +47 -0
- aip_agents/ptc/mcp/templates/__init__.py +1 -0
- aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
- aip_agents/ptc/mcp/templates/mcp_client.py.template +239 -0
- aip_agents/ptc/naming.py +184 -0
- aip_agents/ptc/naming.pyi +76 -0
- aip_agents/ptc/payload.py +26 -0
- aip_agents/ptc/payload.pyi +15 -0
- aip_agents/ptc/prompt_builder.py +571 -0
- aip_agents/ptc/prompt_builder.pyi +55 -0
- aip_agents/ptc/ptc_helper.py +16 -0
- aip_agents/ptc/ptc_helper.pyi +1 -0
- aip_agents/ptc/sandbox_bridge.py +58 -0
- aip_agents/ptc/sandbox_bridge.pyi +25 -0
- aip_agents/ptc/template_utils.py +33 -0
- aip_agents/ptc/template_utils.pyi +13 -0
- aip_agents/ptc/templates/__init__.py +1 -0
- aip_agents/ptc/templates/__init__.pyi +0 -0
- aip_agents/ptc/templates/ptc_helper.py.template +134 -0
- aip_agents/sandbox/__init__.py +43 -0
- aip_agents/sandbox/__init__.pyi +5 -0
- aip_agents/sandbox/defaults.py +9 -0
- aip_agents/sandbox/defaults.pyi +2 -0
- aip_agents/sandbox/e2b_runtime.py +267 -0
- aip_agents/sandbox/e2b_runtime.pyi +51 -0
- aip_agents/sandbox/template_builder.py +131 -0
- aip_agents/sandbox/template_builder.pyi +36 -0
- aip_agents/sandbox/types.py +24 -0
- aip_agents/sandbox/types.pyi +14 -0
- aip_agents/sandbox/validation.py +50 -0
- aip_agents/sandbox/validation.pyi +20 -0
- aip_agents/schema/__init__.py +69 -0
- aip_agents/schema/__init__.pyi +9 -0
- aip_agents/schema/a2a.py +56 -0
- aip_agents/schema/a2a.pyi +40 -0
- aip_agents/schema/agent.py +111 -0
- aip_agents/schema/agent.pyi +65 -0
- aip_agents/schema/hitl.py +157 -0
- aip_agents/schema/hitl.pyi +89 -0
- aip_agents/schema/langgraph.py +37 -0
- aip_agents/schema/langgraph.pyi +28 -0
- aip_agents/schema/model_id.py +97 -0
- aip_agents/schema/model_id.pyi +54 -0
- aip_agents/schema/step_limit.py +108 -0
- aip_agents/schema/step_limit.pyi +63 -0
- aip_agents/schema/storage.py +40 -0
- aip_agents/schema/storage.pyi +21 -0
- aip_agents/sentry/__init__.py +11 -0
- aip_agents/sentry/__init__.pyi +3 -0
- aip_agents/sentry/sentry.py +151 -0
- aip_agents/sentry/sentry.pyi +48 -0
- aip_agents/storage/__init__.py +41 -0
- aip_agents/storage/__init__.pyi +8 -0
- aip_agents/storage/base.py +85 -0
- aip_agents/storage/base.pyi +58 -0
- aip_agents/storage/clients/__init__.py +12 -0
- aip_agents/storage/clients/__init__.pyi +3 -0
- aip_agents/storage/clients/minio_client.py +318 -0
- aip_agents/storage/clients/minio_client.pyi +137 -0
- aip_agents/storage/config.py +62 -0
- aip_agents/storage/config.pyi +29 -0
- aip_agents/storage/providers/__init__.py +15 -0
- aip_agents/storage/providers/__init__.pyi +5 -0
- aip_agents/storage/providers/base.py +106 -0
- aip_agents/storage/providers/base.pyi +88 -0
- aip_agents/storage/providers/memory.py +114 -0
- aip_agents/storage/providers/memory.pyi +79 -0
- aip_agents/storage/providers/object_storage.py +214 -0
- aip_agents/storage/providers/object_storage.pyi +98 -0
- aip_agents/tools/__init__.py +64 -0
- aip_agents/tools/__init__.pyi +11 -0
- aip_agents/tools/browser_use/__init__.py +82 -0
- aip_agents/tools/browser_use/__init__.pyi +14 -0
- aip_agents/tools/browser_use/action_parser.py +103 -0
- aip_agents/tools/browser_use/action_parser.pyi +18 -0
- aip_agents/tools/browser_use/browser_use_tool.py +1120 -0
- aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
- aip_agents/tools/browser_use/llm_config.py +120 -0
- aip_agents/tools/browser_use/llm_config.pyi +52 -0
- aip_agents/tools/browser_use/minio_storage.py +198 -0
- aip_agents/tools/browser_use/minio_storage.pyi +109 -0
- aip_agents/tools/browser_use/schemas.py +119 -0
- aip_agents/tools/browser_use/schemas.pyi +32 -0
- aip_agents/tools/browser_use/session.py +76 -0
- aip_agents/tools/browser_use/session.pyi +4 -0
- aip_agents/tools/browser_use/session_errors.py +132 -0
- aip_agents/tools/browser_use/session_errors.pyi +53 -0
- aip_agents/tools/browser_use/steel_session_recording.py +317 -0
- aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
- aip_agents/tools/browser_use/streaming.py +815 -0
- aip_agents/tools/browser_use/streaming.pyi +81 -0
- aip_agents/tools/browser_use/structured_data_parser.py +257 -0
- aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
- aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
- aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
- aip_agents/tools/browser_use/types.py +78 -0
- aip_agents/tools/browser_use/types.pyi +45 -0
- aip_agents/tools/code_sandbox/__init__.py +26 -0
- aip_agents/tools/code_sandbox/__init__.pyi +3 -0
- aip_agents/tools/code_sandbox/constant.py +13 -0
- aip_agents/tools/code_sandbox/constant.pyi +4 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +306 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +102 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
- aip_agents/tools/constants.py +177 -0
- aip_agents/tools/constants.pyi +138 -0
- aip_agents/tools/date_range_tool.py +554 -0
- aip_agents/tools/date_range_tool.pyi +21 -0
- aip_agents/tools/document_loader/__init__.py +44 -0
- aip_agents/tools/document_loader/__init__.pyi +7 -0
- aip_agents/tools/document_loader/base_reader.py +302 -0
- aip_agents/tools/document_loader/base_reader.pyi +75 -0
- aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
- aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
- aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
- aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
- aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
- aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
- aip_agents/tools/document_loader/pdf_splitter.py +169 -0
- aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
- aip_agents/tools/execute_ptc_code.py +308 -0
- aip_agents/tools/execute_ptc_code.pyi +90 -0
- aip_agents/tools/gl_connector/__init__.py +5 -0
- aip_agents/tools/gl_connector/__init__.pyi +3 -0
- aip_agents/tools/gl_connector/tool.py +383 -0
- aip_agents/tools/gl_connector/tool.pyi +74 -0
- aip_agents/tools/gl_connector_tools.py +119 -0
- aip_agents/tools/gl_connector_tools.pyi +39 -0
- aip_agents/tools/memory_search/__init__.py +29 -0
- aip_agents/tools/memory_search/__init__.pyi +5 -0
- aip_agents/tools/memory_search/base.py +200 -0
- aip_agents/tools/memory_search/base.pyi +69 -0
- aip_agents/tools/memory_search/mem0.py +365 -0
- aip_agents/tools/memory_search/mem0.pyi +29 -0
- aip_agents/tools/memory_search/schema.py +81 -0
- aip_agents/tools/memory_search/schema.pyi +25 -0
- aip_agents/tools/memory_search_tool.py +34 -0
- aip_agents/tools/memory_search_tool.pyi +3 -0
- aip_agents/tools/time_tool.py +117 -0
- aip_agents/tools/time_tool.pyi +16 -0
- aip_agents/tools/tool_config_injector.py +300 -0
- aip_agents/tools/tool_config_injector.pyi +26 -0
- aip_agents/tools/web_search/__init__.py +15 -0
- aip_agents/tools/web_search/__init__.pyi +3 -0
- aip_agents/tools/web_search/serper_tool.py +187 -0
- aip_agents/tools/web_search/serper_tool.pyi +19 -0
- aip_agents/types/__init__.py +70 -0
- aip_agents/types/__init__.pyi +36 -0
- aip_agents/types/a2a_events.py +13 -0
- aip_agents/types/a2a_events.pyi +3 -0
- aip_agents/utils/__init__.py +79 -0
- aip_agents/utils/__init__.pyi +11 -0
- aip_agents/utils/a2a_connector.py +1757 -0
- aip_agents/utils/a2a_connector.pyi +146 -0
- aip_agents/utils/artifact_helpers.py +502 -0
- aip_agents/utils/artifact_helpers.pyi +203 -0
- aip_agents/utils/constants.py +22 -0
- aip_agents/utils/constants.pyi +10 -0
- aip_agents/utils/datetime/__init__.py +34 -0
- aip_agents/utils/datetime/__init__.pyi +4 -0
- aip_agents/utils/datetime/normalization.py +231 -0
- aip_agents/utils/datetime/normalization.pyi +95 -0
- aip_agents/utils/datetime/timezone.py +206 -0
- aip_agents/utils/datetime/timezone.pyi +48 -0
- aip_agents/utils/env_loader.py +27 -0
- aip_agents/utils/env_loader.pyi +10 -0
- aip_agents/utils/event_handler_registry.py +58 -0
- aip_agents/utils/event_handler_registry.pyi +23 -0
- aip_agents/utils/file_prompt_utils.py +176 -0
- aip_agents/utils/file_prompt_utils.pyi +21 -0
- aip_agents/utils/final_response_builder.py +211 -0
- aip_agents/utils/final_response_builder.pyi +34 -0
- aip_agents/utils/formatter_llm_client.py +231 -0
- aip_agents/utils/formatter_llm_client.pyi +71 -0
- aip_agents/utils/langgraph/__init__.py +19 -0
- aip_agents/utils/langgraph/__init__.pyi +3 -0
- aip_agents/utils/langgraph/converter.py +128 -0
- aip_agents/utils/langgraph/converter.pyi +49 -0
- aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
- aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1096 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
- aip_agents/utils/langgraph/tool_output_management.py +1047 -0
- aip_agents/utils/langgraph/tool_output_management.pyi +329 -0
- aip_agents/utils/logger.py +195 -0
- aip_agents/utils/logger.pyi +60 -0
- aip_agents/utils/metadata/__init__.py +27 -0
- aip_agents/utils/metadata/__init__.pyi +5 -0
- aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
- aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
- aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
- aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
- aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
- aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
- aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
- aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
- aip_agents/utils/metadata/activity_narrative/context.py +49 -0
- aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
- aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
- aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
- aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
- aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
- aip_agents/utils/metadata/schemas/__init__.py +16 -0
- aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
- aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
- aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
- aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
- aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
- aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
- aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
- aip_agents/utils/metadata_helper.py +358 -0
- aip_agents/utils/metadata_helper.pyi +117 -0
- aip_agents/utils/name_preprocessor/__init__.py +17 -0
- aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
- aip_agents/utils/pii/__init__.py +25 -0
- aip_agents/utils/pii/__init__.pyi +5 -0
- aip_agents/utils/pii/pii_handler.py +397 -0
- aip_agents/utils/pii/pii_handler.pyi +96 -0
- aip_agents/utils/pii/pii_helper.py +207 -0
- aip_agents/utils/pii/pii_helper.pyi +78 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
- aip_agents/utils/reference_helper.py +273 -0
- aip_agents/utils/reference_helper.pyi +81 -0
- aip_agents/utils/sse_chunk_transformer.py +831 -0
- aip_agents/utils/sse_chunk_transformer.pyi +166 -0
- aip_agents/utils/step_limit_manager.py +265 -0
- aip_agents/utils/step_limit_manager.pyi +112 -0
- aip_agents/utils/token_usage_helper.py +156 -0
- aip_agents/utils/token_usage_helper.pyi +60 -0
- aip_agents_binary-0.6.4.dist-info/METADATA +673 -0
- aip_agents_binary-0.6.4.dist-info/RECORD +612 -0
- aip_agents_binary-0.6.4.dist-info/WHEEL +5 -0
- aip_agents_binary-0.6.4.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
3
|
+
from aip_agents.examples.tools.mock_retrieval_tool import MockRetrievalTool as MockRetrievalTool
|
|
4
|
+
from aip_agents.examples.tools.pii_demo_tools import get_customer_info as get_customer_info, get_employee_data as get_employee_data, get_user_profile as get_user_profile
|
|
5
|
+
from aip_agents.examples.tools.random_chart_tool import RandomChartTool as RandomChartTool
|
|
6
|
+
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
|
|
7
|
+
from aip_agents.schema.a2a import A2AStreamEventType as A2AStreamEventType
|
|
8
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
9
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
logger: Incomplete
|
|
13
|
+
SERVER_URL: str
|
|
14
|
+
|
|
15
|
+
def create_local_agent(enable_token_streaming: bool = False) -> LangGraphAgent:
|
|
16
|
+
"""Create a local agent with the same tools as the server.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
enable_token_streaming: Whether to enable token streaming for content_chunk events.
|
|
20
|
+
"""
|
|
21
|
+
def format_chunk_summary(chunk: dict[str, Any], index: int) -> str:
|
|
22
|
+
"""Format a chunk for display."""
|
|
23
|
+
async def run_direct_streaming(agent: LangGraphAgent, query: str, pii_mapping: dict[str, str] | None = None) -> list[dict[str, Any]]:
|
|
24
|
+
"""Run arun_sse_stream and collect all chunks."""
|
|
25
|
+
async def run_connector_streaming(agent: LangGraphAgent, query: str, pii_mapping: dict[str, str] | None = None) -> list[dict[str, Any]]:
|
|
26
|
+
"""Run astream_to_agent via A2A connector and collect all chunks."""
|
|
27
|
+
def get_chunk_keys(chunks: list[dict[str, Any]]) -> set[str]:
|
|
28
|
+
"""Get all unique keys across all chunks."""
|
|
29
|
+
def get_field_types(chunks: list[dict[str, Any]], field: str) -> set[str]:
|
|
30
|
+
"""Get all types seen for a field across chunks.
|
|
31
|
+
|
|
32
|
+
Note: StrEnum values are reported as 'str' since they ARE strings
|
|
33
|
+
and serialize identically over HTTP/SSE.
|
|
34
|
+
"""
|
|
35
|
+
def group_chunks_by_event_type(chunks: list[dict[str, Any]]) -> dict[str, list[dict[str, Any]]]:
|
|
36
|
+
"""Group chunks by their event_type."""
|
|
37
|
+
def compare_chunk_structure(chunk1: dict[str, Any], chunk2: dict[str, Any]) -> dict[str, Any]:
|
|
38
|
+
"""Compare structure of two chunks and return differences."""
|
|
39
|
+
def compare_event_type_groups(direct_groups: dict[str, list[dict[str, Any]]], connector_groups: dict[str, list[dict[str, Any]]]) -> dict[str, Any]:
|
|
40
|
+
"""Compare chunks grouped by event type - RAW comparison without filtering."""
|
|
41
|
+
def compare_chunks(direct_chunks: list[dict[str, Any]], connector_chunks: list[dict[str, Any]]) -> dict[str, Any]:
|
|
42
|
+
"""Compare the two chunk lists and produce a comprehensive structural summary."""
|
|
43
|
+
def print_event_type_comparison(event_comparison: dict[str, Any]) -> None:
|
|
44
|
+
"""Print per-event-type comparison details with exact key/value examples."""
|
|
45
|
+
def print_structure_comparison(comparison: dict[str, Any]) -> None:
|
|
46
|
+
"""Print detailed structure comparison."""
|
|
47
|
+
async def main() -> None:
|
|
48
|
+
"""Main comparison workflow."""
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""A2A server with artifact and reference tools for streaming comparison tests.
|
|
2
|
+
|
|
3
|
+
This server provides an agent with:
|
|
4
|
+
- table_generator tool: Returns artifacts (CSV files)
|
|
5
|
+
- mock_retrieval tool: Returns references
|
|
6
|
+
|
|
7
|
+
To run this server:
|
|
8
|
+
cd libs/aip_agents
|
|
9
|
+
poetry run python -m aip_agents.examples.compare_streaming_server
|
|
10
|
+
|
|
11
|
+
It will listen on http://localhost:18999 by default.
|
|
12
|
+
|
|
13
|
+
Authors:
|
|
14
|
+
AI Agent Platform Team
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import click
|
|
18
|
+
import uvicorn
|
|
19
|
+
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
|
|
20
|
+
from langchain_openai import ChatOpenAI
|
|
21
|
+
|
|
22
|
+
from aip_agents.agent import LangGraphAgent
|
|
23
|
+
from aip_agents.examples.tools.mock_retrieval_tool import MockRetrievalTool
|
|
24
|
+
from aip_agents.examples.tools.pii_demo_tools import (
|
|
25
|
+
get_customer_info,
|
|
26
|
+
get_employee_data,
|
|
27
|
+
get_user_profile,
|
|
28
|
+
)
|
|
29
|
+
from aip_agents.examples.tools.random_chart_tool import RandomChartTool
|
|
30
|
+
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool
|
|
31
|
+
from aip_agents.utils.logger import get_logger
|
|
32
|
+
|
|
33
|
+
logger = get_logger(__name__)
|
|
34
|
+
|
|
35
|
+
SERVER_AGENT_NAME = "StreamingComparisonAgent"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@click.command()
|
|
39
|
+
@click.option("--host", "host", default="localhost", help="Host to bind the server to.")
|
|
40
|
+
@click.option("--port", "port", default=18999, help="Port to bind the server to.")
|
|
41
|
+
def main(host: str, port: int):
|
|
42
|
+
"""Runs the streaming comparison A2A server.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
host: Host to bind the server to.
|
|
46
|
+
port: Port to bind the server to.
|
|
47
|
+
"""
|
|
48
|
+
print(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
|
|
49
|
+
|
|
50
|
+
agent_card = AgentCard(
|
|
51
|
+
name=SERVER_AGENT_NAME,
|
|
52
|
+
description="Agent for comparing direct vs connector streaming with artifacts and references.",
|
|
53
|
+
url=f"http://{host}:{port}",
|
|
54
|
+
version="1.0.0",
|
|
55
|
+
defaultInputModes=["text"],
|
|
56
|
+
defaultOutputModes=["text"],
|
|
57
|
+
capabilities=AgentCapabilities(streaming=True),
|
|
58
|
+
skills=[
|
|
59
|
+
AgentSkill(
|
|
60
|
+
id="table_generation",
|
|
61
|
+
name="Table Generation",
|
|
62
|
+
description="Generates data tables as CSV artifacts.",
|
|
63
|
+
examples=["Generate a table with 3 rows"],
|
|
64
|
+
tags=["table", "artifact"],
|
|
65
|
+
),
|
|
66
|
+
AgentSkill(
|
|
67
|
+
id="mock_retrieval",
|
|
68
|
+
name="Mock Retrieval",
|
|
69
|
+
description="Retrieves mock data with references.",
|
|
70
|
+
examples=["Search for test data"],
|
|
71
|
+
tags=["retrieval", "references"],
|
|
72
|
+
),
|
|
73
|
+
AgentSkill(
|
|
74
|
+
id="customer_info",
|
|
75
|
+
name="Get Customer Information",
|
|
76
|
+
description="Retrieves customer information including email and phone number (PII masked).",
|
|
77
|
+
examples=["Get customer info for C001", "What is the email for customer C002?"],
|
|
78
|
+
tags=["customer", "pii"],
|
|
79
|
+
),
|
|
80
|
+
AgentSkill(
|
|
81
|
+
id="employee_data",
|
|
82
|
+
name="Get Employee Data",
|
|
83
|
+
description="Retrieves employee data including name, email, and salary (PII masked).",
|
|
84
|
+
examples=["Get employee data for E001", "What is the salary for employee E002?"],
|
|
85
|
+
tags=["employee", "pii"],
|
|
86
|
+
),
|
|
87
|
+
AgentSkill(
|
|
88
|
+
id="user_profile",
|
|
89
|
+
name="Get User Profile",
|
|
90
|
+
description="Retrieves user profile information with personal details (PII masked).",
|
|
91
|
+
examples=["Get user profile for U001", "What is the email for user U002?"],
|
|
92
|
+
tags=["user", "pii"],
|
|
93
|
+
),
|
|
94
|
+
],
|
|
95
|
+
tags=["test", "comparison", "artifacts", "references", "pii"],
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Token streaming disabled for now - will compare token streaming later
|
|
99
|
+
llm = ChatOpenAI(model="gpt-4.1", temperature=0, streaming=False)
|
|
100
|
+
table_tool = TableGeneratorTool()
|
|
101
|
+
mock_retrieval_tool = MockRetrievalTool()
|
|
102
|
+
random_chart_tool = RandomChartTool()
|
|
103
|
+
tools = [table_tool, mock_retrieval_tool, get_customer_info, get_employee_data, get_user_profile]
|
|
104
|
+
|
|
105
|
+
visualization_agent = LangGraphAgent(
|
|
106
|
+
name="RandomChartAgent",
|
|
107
|
+
instruction=(
|
|
108
|
+
"You are a visualization specialist. Whenever asked to produce a chart, visualization, or images "
|
|
109
|
+
"that summarize insights, call the random_chart_tool to generate a bar chart artifact. "
|
|
110
|
+
"Describe what the generated image represents."
|
|
111
|
+
),
|
|
112
|
+
model=llm,
|
|
113
|
+
tools=[random_chart_tool],
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
agent = LangGraphAgent(
|
|
117
|
+
name=SERVER_AGENT_NAME,
|
|
118
|
+
instruction=(
|
|
119
|
+
"You are a helpful assistant for testing streaming comparison. "
|
|
120
|
+
"When asked for a table, use the table_generator tool. "
|
|
121
|
+
"When asked to search or retrieve, use the mock_retrieval tool. "
|
|
122
|
+
"When asked for customer information, use the get_customer_info tool. "
|
|
123
|
+
"When asked for employee data, use the get_employee_data tool. "
|
|
124
|
+
"When asked for user profile, use the get_user_profile tool. "
|
|
125
|
+
"IMPORTANT: When you receive PII placeholders like <PERSON_1>, pass them WITH the angle brackets <> "
|
|
126
|
+
"to the tools - they are required for the PII system to work correctly. "
|
|
127
|
+
"Always use the tools when relevant to demonstrate artifacts, references, and PII masking."
|
|
128
|
+
),
|
|
129
|
+
model=llm,
|
|
130
|
+
tools=tools,
|
|
131
|
+
enable_a2a_token_streaming=False,
|
|
132
|
+
agents=[visualization_agent],
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
app = agent.to_a2a(agent_card=agent_card)
|
|
136
|
+
|
|
137
|
+
print("A2A application configured. Starting Uvicorn server...")
|
|
138
|
+
uvicorn.run(app, host=host, port=port)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
if __name__ == "__main__":
|
|
142
|
+
main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
3
|
+
from aip_agents.examples.tools.mock_retrieval_tool import MockRetrievalTool as MockRetrievalTool
|
|
4
|
+
from aip_agents.examples.tools.pii_demo_tools import get_customer_info as get_customer_info, get_employee_data as get_employee_data, get_user_profile as get_user_profile
|
|
5
|
+
from aip_agents.examples.tools.random_chart_tool import RandomChartTool as RandomChartTool
|
|
6
|
+
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
|
|
7
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
8
|
+
|
|
9
|
+
logger: Incomplete
|
|
10
|
+
SERVER_AGENT_NAME: str
|
|
11
|
+
|
|
12
|
+
def main(host: str, port: int):
|
|
13
|
+
"""Runs the streaming comparison A2A server.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
host: Host to bind the server to.
|
|
17
|
+
port: Port to bind the server to.
|
|
18
|
+
"""
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Example of a General Assistant GoogleADKAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A.
|
|
7
|
+
4. Handling responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
|
|
15
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent
|
|
16
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
17
|
+
from aip_agents.utils.logger import get_logger
|
|
18
|
+
|
|
19
|
+
logger = get_logger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def main():
|
|
23
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
24
|
+
agent_name = "GoogleAssistantAgent"
|
|
25
|
+
# Create the agent with simplified instructions tailored to the agent name
|
|
26
|
+
assistant_agent = GoogleADKAgent(
|
|
27
|
+
name=agent_name,
|
|
28
|
+
instruction="You are a helpful assistant that can help with various tasks by delegating to specialized agents.",
|
|
29
|
+
model="gemini-2.0-flash",
|
|
30
|
+
tools=[],
|
|
31
|
+
max_iterations=5,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Discover agents
|
|
35
|
+
client_a2a_config = A2AClientConfig(
|
|
36
|
+
discovery_urls=["http://localhost:8002"],
|
|
37
|
+
)
|
|
38
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
39
|
+
|
|
40
|
+
query = "What is the weather in Jakarta?"
|
|
41
|
+
logger.info(f"Processing Query: {query}")
|
|
42
|
+
|
|
43
|
+
response = assistant_agent.send_to_agent(agent_cards[0], query)
|
|
44
|
+
logger.info(f"Raw response: \n\n{json.dumps(response, indent=4)}Q")
|
|
45
|
+
logger.info(f"Agent Response: {response['content']}")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if __name__ == "__main__":
|
|
49
|
+
main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
|
|
3
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
4
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
|
|
8
|
+
def main() -> None:
|
|
9
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""Example of a General Assistant GoogleADKAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A.
|
|
7
|
+
4. Handling responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent
|
|
14
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
15
|
+
from aip_agents.utils.logger import get_logger
|
|
16
|
+
|
|
17
|
+
logger = get_logger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def main():
|
|
21
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
22
|
+
agent_name = "GoogleAssistantAgent"
|
|
23
|
+
assistant_agent = GoogleADKAgent(
|
|
24
|
+
name=agent_name,
|
|
25
|
+
instruction="You are a helpful assistant that can help with various tasks by delegating to specialized agents.",
|
|
26
|
+
model="gemini-2.0-flash",
|
|
27
|
+
tools=[],
|
|
28
|
+
max_iterations=5,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
# Discover agents
|
|
32
|
+
client_a2a_config = A2AClientConfig(
|
|
33
|
+
discovery_urls=["http://localhost:8002"],
|
|
34
|
+
)
|
|
35
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
36
|
+
|
|
37
|
+
# Register agents
|
|
38
|
+
assistant_agent.register_a2a_agents(agent_cards)
|
|
39
|
+
|
|
40
|
+
query = "What is the weather in Jakarta?"
|
|
41
|
+
logger.info(f"Processing Query: {query}")
|
|
42
|
+
|
|
43
|
+
response = assistant_agent.run(query)
|
|
44
|
+
logger.info(f"Assistant Agent Response: {response['output']}")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
if __name__ == "__main__":
|
|
48
|
+
main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
|
|
3
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
4
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
|
|
8
|
+
def main() -> None:
|
|
9
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Example of a General Assistant GoogleADKAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A with streaming.
|
|
7
|
+
4. Handling streaming responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
|
|
15
|
+
from a2a.types import TaskState
|
|
16
|
+
|
|
17
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent
|
|
18
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
19
|
+
from aip_agents.utils.logger import get_logger
|
|
20
|
+
|
|
21
|
+
logger = get_logger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
async def main():
|
|
25
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
26
|
+
agent_name = "GoogleADKWeatherAgent"
|
|
27
|
+
|
|
28
|
+
# Create the agent with simplified instructions and our tool
|
|
29
|
+
assistant_agent = GoogleADKAgent(
|
|
30
|
+
name=agent_name,
|
|
31
|
+
instruction="You are a helpful assistant that can help with various tasks by delegating to specialized agents.",
|
|
32
|
+
model="gemini-2.0-flash",
|
|
33
|
+
tools=[],
|
|
34
|
+
max_iterations=5,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Discover agents
|
|
38
|
+
client_a2a_config = A2AClientConfig(
|
|
39
|
+
discovery_urls=["http://localhost:8002"],
|
|
40
|
+
)
|
|
41
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
42
|
+
|
|
43
|
+
query = "What is the weather in Jakarta?"
|
|
44
|
+
logger.info(f"Processing Query: {query}")
|
|
45
|
+
|
|
46
|
+
agent_result = ""
|
|
47
|
+
async for chunk in assistant_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
|
|
48
|
+
task_state = chunk.get("task_state")
|
|
49
|
+
content = chunk.get("content", "")
|
|
50
|
+
if task_state == TaskState.working and content:
|
|
51
|
+
logger.info(f"Event Working: {content}")
|
|
52
|
+
elif task_state == TaskState.completed and content:
|
|
53
|
+
agent_result += content
|
|
54
|
+
|
|
55
|
+
logger.info(f"Agent Response: {agent_result}")
|
|
56
|
+
return agent_result
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
if __name__ == "__main__":
|
|
60
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
|
|
3
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
4
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
|
|
8
|
+
async def main():
|
|
9
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""Example A2A server for a Google ADK Weather Service.
|
|
2
|
+
|
|
3
|
+
This server instantiates a Google ADK agent with weather lookup capabilities and serves it
|
|
4
|
+
via the A2A protocol using GoogleADKAgent's to_a2a method.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/hello_world_a2a_google_adk_server.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8002 by default.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
13
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import click
|
|
17
|
+
import uvicorn
|
|
18
|
+
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
|
|
19
|
+
|
|
20
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent
|
|
21
|
+
from aip_agents.examples.tools.adk_weather_tool import weather_tool
|
|
22
|
+
from aip_agents.utils.logger import get_logger
|
|
23
|
+
|
|
24
|
+
logger = get_logger(__name__)
|
|
25
|
+
|
|
26
|
+
SERVER_AGENT_NAME = "GoogleADKWeatherAgent"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@click.command()
|
|
30
|
+
@click.option("--host", "host", default="localhost", help="Host to bind the server to.")
|
|
31
|
+
@click.option("--port", "port", default=8002, help="Port to bind the server to.")
|
|
32
|
+
def main(host: str, port: int):
|
|
33
|
+
"""Runs the Google ADK Weather A2A server.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
host (str): Host to bind the server to.
|
|
37
|
+
port (int): Port to bind the server to.
|
|
38
|
+
"""
|
|
39
|
+
logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
|
|
40
|
+
|
|
41
|
+
agent_card = AgentCard(
|
|
42
|
+
name=SERVER_AGENT_NAME,
|
|
43
|
+
description="A weather agent based on Google ADK that provides weather information for cities.",
|
|
44
|
+
url=f"http://{host}:{port}",
|
|
45
|
+
version="1.0.0",
|
|
46
|
+
defaultInputModes=["text"],
|
|
47
|
+
defaultOutputModes=["text"],
|
|
48
|
+
capabilities=AgentCapabilities(streaming=True),
|
|
49
|
+
skills=[
|
|
50
|
+
AgentSkill(
|
|
51
|
+
id="weather",
|
|
52
|
+
name="Weather Lookup",
|
|
53
|
+
description="Provides current weather information for cities.",
|
|
54
|
+
examples=["What's the weather in Tokyo?", "Get weather for London"],
|
|
55
|
+
tags=["weather"],
|
|
56
|
+
)
|
|
57
|
+
],
|
|
58
|
+
tags=["weather"],
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
# Create a Google ADK agent
|
|
62
|
+
agent = GoogleADKAgent(
|
|
63
|
+
model="gemini-2.0-flash",
|
|
64
|
+
name=SERVER_AGENT_NAME,
|
|
65
|
+
description="A weather agent that provides weather information for cities.",
|
|
66
|
+
instruction="""You are a weather agent that provides weather information for cities.
|
|
67
|
+
Always use the weather_tool for looking up weather data. Format your responses clearly and professionally.""",
|
|
68
|
+
tools=[weather_tool],
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Convert the agent to an A2A server directly
|
|
72
|
+
app = agent.to_a2a(agent_card=agent_card)
|
|
73
|
+
|
|
74
|
+
uvicorn.run(app, host=host, port=port)
|
|
75
|
+
logger.info("A2A application configured. Starting Uvicorn server...")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
if __name__ == "__main__":
|
|
79
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
|
|
3
|
+
from aip_agents.examples.tools.adk_weather_tool import weather_tool as weather_tool
|
|
4
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
SERVER_AGENT_NAME: str
|
|
8
|
+
|
|
9
|
+
def main(host: str, port: int):
|
|
10
|
+
"""Runs the Google ADK Weather A2A server.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
host (str): Host to bind the server to.
|
|
14
|
+
port (int): Port to bind the server to.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Example of a General Assistant LangChainAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A.
|
|
7
|
+
4. Handling responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from langchain_openai import ChatOpenAI
|
|
14
|
+
|
|
15
|
+
from aip_agents.agent import LangChainAgent
|
|
16
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main():
|
|
20
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
21
|
+
assistant_agent = LangChainAgent(
|
|
22
|
+
name="AssistantAgentLangChain",
|
|
23
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
24
|
+
by delegating to specialized agents.""",
|
|
25
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Discover agents
|
|
29
|
+
client_a2a_config = A2AClientConfig(
|
|
30
|
+
discovery_urls=["http://localhost:8001"],
|
|
31
|
+
)
|
|
32
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
33
|
+
|
|
34
|
+
response = assistant_agent.send_to_agent(agent_cards[0], message="What is the weather in Jakarta?")
|
|
35
|
+
print(response.get("content", str(response)))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
if __name__ == "__main__":
|
|
39
|
+
main()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Example of a General Assistant LangChainAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A.
|
|
7
|
+
4. Handling responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from langchain_openai import ChatOpenAI
|
|
14
|
+
|
|
15
|
+
from aip_agents.agent import LangChainAgent
|
|
16
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main():
|
|
20
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
21
|
+
assistant_agent = LangChainAgent(
|
|
22
|
+
name="AssistantAgentLangChain",
|
|
23
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
24
|
+
by delegating to specialized agents.""",
|
|
25
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
client_a2a_config = A2AClientConfig(
|
|
29
|
+
discovery_urls=["http://localhost:8001"],
|
|
30
|
+
)
|
|
31
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
32
|
+
assistant_agent.register_a2a_agents(agent_cards)
|
|
33
|
+
|
|
34
|
+
response = assistant_agent.run("What is the weather in Jakarta?")
|
|
35
|
+
print(response["output"])
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
if __name__ == "__main__":
|
|
39
|
+
main()
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Example of a General Assistant LangChainAgent that can delegate tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Creating a general assistant agent that can help with various queries.
|
|
6
|
+
3. Delegating specific tasks to specialized agents via A2A.
|
|
7
|
+
4. Handling responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from aip_agents.agent import LangChainAgent
|
|
14
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
19
|
+
assistant_agent = LangChainAgent(
|
|
20
|
+
name="AssistantAgentLangChain",
|
|
21
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
22
|
+
by delegating to specialized agents.""",
|
|
23
|
+
model="openai/gpt-4o",
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Discover agents
|
|
27
|
+
client_a2a_config = A2AClientConfig(
|
|
28
|
+
discovery_urls=["http://localhost:8001"],
|
|
29
|
+
)
|
|
30
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
31
|
+
|
|
32
|
+
response = assistant_agent.send_to_agent(agent_cards[0], message="What is the weather in Jakarta?")
|
|
33
|
+
print(response.get("content", str(response)))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if __name__ == "__main__":
|
|
37
|
+
main()
|