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.
- 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,73 @@
|
|
|
1
|
+
"""Example of a General Assistant LangGraphAgent 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 artifacts in the response.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
import base64
|
|
15
|
+
|
|
16
|
+
from langchain_openai import ChatOpenAI
|
|
17
|
+
|
|
18
|
+
from aip_agents.agent import LangGraphAgent
|
|
19
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def main():
|
|
23
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
24
|
+
llm = ChatOpenAI(model="gpt-4.1", streaming=True)
|
|
25
|
+
assistant_agent = LangGraphAgent(
|
|
26
|
+
name="AssistantAgent",
|
|
27
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
28
|
+
by delegating to specialized agents.""",
|
|
29
|
+
model=llm,
|
|
30
|
+
tools=[],
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
# Discover agents
|
|
34
|
+
client_a2a_config = A2AClientConfig(
|
|
35
|
+
discovery_urls=["http://localhost:8999"],
|
|
36
|
+
)
|
|
37
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
38
|
+
|
|
39
|
+
# Test query
|
|
40
|
+
query = "Generate a data table with 5 rows and 3 columns showing Name, Age, and City and Create a simple image."
|
|
41
|
+
result = assistant_agent.send_to_agent(agent_card=agent_cards[0], message=query)
|
|
42
|
+
print(f"Result: {result}")
|
|
43
|
+
|
|
44
|
+
# Handle artifacts from result
|
|
45
|
+
artifacts = result.get("artifacts", [])
|
|
46
|
+
if artifacts:
|
|
47
|
+
print(f"\n--- {len(artifacts)} Artifacts Received ---")
|
|
48
|
+
for artifact in artifacts:
|
|
49
|
+
name = artifact.get("name", "unknown")
|
|
50
|
+
mime_type = artifact.get("mime_type", "unknown")
|
|
51
|
+
file_data = artifact.get("file_data")
|
|
52
|
+
|
|
53
|
+
print(f"Name: {name}")
|
|
54
|
+
print(f"Type: {mime_type}")
|
|
55
|
+
|
|
56
|
+
if file_data:
|
|
57
|
+
try:
|
|
58
|
+
if mime_type == "text/csv":
|
|
59
|
+
decoded_content = base64.b64decode(file_data).decode("utf-8")
|
|
60
|
+
print(f"CSV Preview (first 200 chars): {decoded_content[:200]}...")
|
|
61
|
+
elif mime_type.startswith("image/"):
|
|
62
|
+
file_size = len(base64.b64decode(file_data))
|
|
63
|
+
print(f"Image size: {file_size} bytes")
|
|
64
|
+
else:
|
|
65
|
+
print("File data available (base64 encoded)")
|
|
66
|
+
except Exception as e:
|
|
67
|
+
print(f"Could not decode file data: {e}")
|
|
68
|
+
print("---")
|
|
69
|
+
print("--- End Artifacts ---\n")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if __name__ == "__main__":
|
|
73
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""Example of a General Assistant LangGraphAgent 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
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import asyncio
|
|
15
|
+
import base64
|
|
16
|
+
|
|
17
|
+
from langchain_openai import ChatOpenAI
|
|
18
|
+
|
|
19
|
+
from aip_agents.agent import LangGraphAgent
|
|
20
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
async def main():
|
|
24
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
25
|
+
llm = ChatOpenAI(model="gpt-4.1", streaming=True)
|
|
26
|
+
assistant_agent = LangGraphAgent(
|
|
27
|
+
name="AssistantAgent",
|
|
28
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
29
|
+
by delegating to specialized agents.""",
|
|
30
|
+
model=llm,
|
|
31
|
+
tools=[],
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Discover agents
|
|
35
|
+
client_a2a_config = A2AClientConfig(
|
|
36
|
+
discovery_urls=["http://localhost:8999"],
|
|
37
|
+
)
|
|
38
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
39
|
+
|
|
40
|
+
# Test query
|
|
41
|
+
query = "Generate me just 1 single image and a table data of 10 rows"
|
|
42
|
+
|
|
43
|
+
async for chunk in assistant_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
|
|
44
|
+
content = chunk.get("content", "")
|
|
45
|
+
if content:
|
|
46
|
+
print(content)
|
|
47
|
+
|
|
48
|
+
# Handle artifacts
|
|
49
|
+
if chunk.get("status") == "success" and chunk.get("artifacts"):
|
|
50
|
+
for artifact in chunk.get("artifacts", []):
|
|
51
|
+
artifact_name = artifact.get("name", "unknown")
|
|
52
|
+
mime_type = artifact.get("mime_type", "unknown")
|
|
53
|
+
file_data = artifact.get("file_data")
|
|
54
|
+
|
|
55
|
+
print("\n--- Artifact Received ---")
|
|
56
|
+
print(f"Name: {artifact_name}")
|
|
57
|
+
print(f"Type: {mime_type}")
|
|
58
|
+
|
|
59
|
+
if file_data:
|
|
60
|
+
try:
|
|
61
|
+
if mime_type == "text/csv":
|
|
62
|
+
decoded_content = base64.b64decode(file_data).decode("utf-8")
|
|
63
|
+
print(f"CSV Preview (first 200 chars): {decoded_content[:200]}...")
|
|
64
|
+
elif mime_type.startswith("image/"):
|
|
65
|
+
file_size = len(base64.b64decode(file_data))
|
|
66
|
+
print(f"Image size: {file_size} bytes")
|
|
67
|
+
else:
|
|
68
|
+
print("File data available (base64 encoded)")
|
|
69
|
+
except Exception as e:
|
|
70
|
+
print(f"Could not decode file data: {e}")
|
|
71
|
+
|
|
72
|
+
print("--- End Artifact ---\n")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if __name__ == "__main__":
|
|
76
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Example A2A server for a LangGraphAgent Weather Service.
|
|
2
|
+
|
|
3
|
+
This server instantiates a LangGraphAgent with weather lookup capabilities and serves it
|
|
4
|
+
via the A2A protocol using the proper A2A server setup with LangGraphA2AExecutor.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/hello_world_a2a_langgraph_server.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8001 by default.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import click
|
|
16
|
+
import uvicorn
|
|
17
|
+
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
|
|
18
|
+
|
|
19
|
+
from aip_agents.agent import LangGraphAgent
|
|
20
|
+
from aip_agents.examples.tools.image_artifact_tool import ImageArtifactTool
|
|
21
|
+
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool
|
|
22
|
+
from aip_agents.utils.logger import get_logger
|
|
23
|
+
|
|
24
|
+
logger = get_logger(__name__)
|
|
25
|
+
|
|
26
|
+
SERVER_AGENT_NAME = "ArtifactAgent"
|
|
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=8999, help="Port to bind the server to.")
|
|
32
|
+
def main(host: str, port: int):
|
|
33
|
+
"""Runs the LangGraph Artifact Generation 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="An agent that can generate data tables and images as downloadable artifacts.",
|
|
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="table_generation",
|
|
52
|
+
name="Table Generation",
|
|
53
|
+
description="Generates data tables and provides them as downloadable CSV files.",
|
|
54
|
+
examples=["Generate a data table with 5 rows and 3 columns", "Create a table with customer data"],
|
|
55
|
+
tags=["table", "data", "csv"],
|
|
56
|
+
),
|
|
57
|
+
AgentSkill(
|
|
58
|
+
id="image_generation",
|
|
59
|
+
name="Image Generation",
|
|
60
|
+
description="Creates simple images and provides them as downloadable PNG files.",
|
|
61
|
+
examples=["Create an image", "Generate a simple graphic"],
|
|
62
|
+
tags=["image", "graphics", "png"],
|
|
63
|
+
),
|
|
64
|
+
],
|
|
65
|
+
tags=["artifacts", "files", "generation"],
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
table_tool = TableGeneratorTool()
|
|
69
|
+
image_tool = ImageArtifactTool()
|
|
70
|
+
tools = [table_tool, image_tool]
|
|
71
|
+
|
|
72
|
+
langgraph_agent = LangGraphAgent(
|
|
73
|
+
name=SERVER_AGENT_NAME,
|
|
74
|
+
instruction=(
|
|
75
|
+
"You are a helpful assistant that can generate data tables and images. "
|
|
76
|
+
"When users ask for data tables, use the table_generator tool to create both a preview "
|
|
77
|
+
"and a downloadable CSV file. When users ask for images, use the image_generator tool "
|
|
78
|
+
"to create visual content. Always provide clear descriptions of what you're generating."
|
|
79
|
+
"Format your responses clearly and professionally."
|
|
80
|
+
),
|
|
81
|
+
model="openai/gpt-4.1",
|
|
82
|
+
tools=tools,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
app = langgraph_agent.to_a2a(agent_card=agent_card)
|
|
86
|
+
|
|
87
|
+
logger.info("A2A application configured. Starting Uvicorn server...")
|
|
88
|
+
uvicorn.run(app, host=host, port=port)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
main()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
3
|
+
from aip_agents.examples.tools.image_artifact_tool import ImageArtifactTool as ImageArtifactTool
|
|
4
|
+
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
|
|
5
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
6
|
+
|
|
7
|
+
logger: Incomplete
|
|
8
|
+
SERVER_AGENT_NAME: str
|
|
9
|
+
|
|
10
|
+
def main(host: str, port: int):
|
|
11
|
+
"""Runs the LangGraph Artifact Generation A2A server.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
host (str): Host to bind the server to.
|
|
15
|
+
port (int): Port to bind the server to.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Example of a General Assistant LangGraphAgent 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
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import json
|
|
15
|
+
|
|
16
|
+
from langchain_openai import ChatOpenAI
|
|
17
|
+
|
|
18
|
+
from aip_agents.agent import LangGraphAgent
|
|
19
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
20
|
+
from aip_agents.utils.logger import get_logger
|
|
21
|
+
|
|
22
|
+
logger = get_logger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def main():
|
|
26
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
27
|
+
# Init Assistant Agent
|
|
28
|
+
llm = ChatOpenAI(model="gpt-4.1")
|
|
29
|
+
|
|
30
|
+
# Create and return the LangGraphAgent
|
|
31
|
+
assistant_agent = LangGraphAgent(
|
|
32
|
+
name="AssistantAgent",
|
|
33
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
34
|
+
by delegating to specialized agents.""",
|
|
35
|
+
model=llm,
|
|
36
|
+
tools=[],
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# Discover agents
|
|
40
|
+
client_a2a_config = A2AClientConfig(
|
|
41
|
+
discovery_urls=["http://localhost:8001"],
|
|
42
|
+
)
|
|
43
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
44
|
+
|
|
45
|
+
query = "What is the weather in Jakarta?"
|
|
46
|
+
logger.info(f"Processing Query: {query}")
|
|
47
|
+
|
|
48
|
+
response = assistant_agent.send_to_agent(agent_cards[0], query)
|
|
49
|
+
logger.info(f"Raw response: \n\n{json.dumps(response, indent=4)}")
|
|
50
|
+
logger.info(f"Agent Response: {response['content']}")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if __name__ == "__main__":
|
|
54
|
+
main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
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,54 @@
|
|
|
1
|
+
"""Example of a General Assistant LangGraphAgent 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
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from langchain_openai import ChatOpenAI
|
|
15
|
+
|
|
16
|
+
from aip_agents.agent import LangGraphAgent
|
|
17
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
18
|
+
from aip_agents.utils.logger import get_logger
|
|
19
|
+
|
|
20
|
+
logger = get_logger(__name__)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def main():
|
|
24
|
+
"""Main function demonstrating the General Assistant agent with A2A capabilities."""
|
|
25
|
+
# Create the LLM
|
|
26
|
+
llm = ChatOpenAI(model="gpt-4.1")
|
|
27
|
+
|
|
28
|
+
# Create and return the LangGraphAgent
|
|
29
|
+
assistant_agent = LangGraphAgent(
|
|
30
|
+
name="AssistantAgent",
|
|
31
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
32
|
+
by delegating to specialized agents.""",
|
|
33
|
+
model=llm,
|
|
34
|
+
tools=[],
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Discover agents
|
|
38
|
+
client_a2a_config = A2AClientConfig(
|
|
39
|
+
discovery_urls=["http://localhost:8001"],
|
|
40
|
+
)
|
|
41
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
42
|
+
|
|
43
|
+
# Register agents
|
|
44
|
+
assistant_agent.register_a2a_agents(agent_cards)
|
|
45
|
+
|
|
46
|
+
query = "What is the weather in Jakarta?"
|
|
47
|
+
logger.info(f"Processing Query: {query}")
|
|
48
|
+
|
|
49
|
+
response = assistant_agent.run(query)
|
|
50
|
+
logger.info(f"Assistant Agent Response: {response['output']}")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if __name__ == "__main__":
|
|
54
|
+
main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
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,32 @@
|
|
|
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
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from aip_agents.agent import LangChainAgent
|
|
15
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
assistant_agent = LangChainAgent(
|
|
19
|
+
name="AssistantAgentLangChain",
|
|
20
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
21
|
+
by delegating to specialized agents.""",
|
|
22
|
+
model="openai/gpt-4.1",
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
client_a2a_config = A2AClientConfig(
|
|
26
|
+
discovery_urls=["http://localhost:8001"],
|
|
27
|
+
)
|
|
28
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
29
|
+
assistant_agent.register_a2a_agents(agent_cards)
|
|
30
|
+
|
|
31
|
+
response = assistant_agent.run("What is the weather in Jakarta?")
|
|
32
|
+
print(response["output"])
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Example of a General Assistant LangGraphAgent 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
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import asyncio
|
|
15
|
+
|
|
16
|
+
from langchain_openai import ChatOpenAI
|
|
17
|
+
|
|
18
|
+
from aip_agents.agent import LangGraphAgent
|
|
19
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
20
|
+
from aip_agents.utils.logger import get_logger
|
|
21
|
+
|
|
22
|
+
logger = get_logger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
async def main():
|
|
26
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
27
|
+
llm = ChatOpenAI(model="gpt-4.1", streaming=True)
|
|
28
|
+
assistant_agent = LangGraphAgent(
|
|
29
|
+
name="AssistantAgent",
|
|
30
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
31
|
+
by delegating to specialized agents.""",
|
|
32
|
+
model=llm,
|
|
33
|
+
tools=[],
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# Discover agents
|
|
37
|
+
client_a2a_config = A2AClientConfig(
|
|
38
|
+
discovery_urls=["http://localhost:8001"],
|
|
39
|
+
)
|
|
40
|
+
agent_cards = assistant_agent.discover_agents(client_a2a_config)
|
|
41
|
+
|
|
42
|
+
query = "What is the weather in Jakarta?"
|
|
43
|
+
logger.info(f"Processing Query: {query}")
|
|
44
|
+
|
|
45
|
+
async for chunk in assistant_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
|
|
46
|
+
print(chunk.get("content", ""))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
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() -> None:
|
|
9
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
@@ -0,0 +1,44 @@
|
|
|
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 with streaming.
|
|
7
|
+
4. Handling streaming responses and providing relevant advice.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
11
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import asyncio
|
|
15
|
+
from pprint import pprint
|
|
16
|
+
|
|
17
|
+
from aip_agents.agent import LangChainAgent
|
|
18
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
async def main():
|
|
22
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
|
|
23
|
+
agent = LangChainAgent(
|
|
24
|
+
name="AssistantAgentLangChain",
|
|
25
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
26
|
+
by delegating to specialized agents.""",
|
|
27
|
+
model="openai/gpt-4.1",
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# Discover agents
|
|
31
|
+
client_a2a_config = A2AClientConfig(
|
|
32
|
+
discovery_urls=["http://localhost:8001"],
|
|
33
|
+
)
|
|
34
|
+
agent_cards = agent.discover_agents(client_a2a_config)
|
|
35
|
+
|
|
36
|
+
async for chunk in agent.astream_to_agent(
|
|
37
|
+
agent_card=agent_cards[0], message="What is the weather in Jakarta and London?"
|
|
38
|
+
):
|
|
39
|
+
pprint(chunk)
|
|
40
|
+
print("-" * 50)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
if __name__ == "__main__":
|
|
44
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Example of a General Assistant LangChainAgent that delegates time and weather tasks to specialized agents.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent to connect to time/weather services.
|
|
5
|
+
2. Creating a general assistant agent that can help with time and weather queries.
|
|
6
|
+
3. Delegating specific time and weather tasks to specialized agents via A2A with streaming.
|
|
7
|
+
4. Handling streaming responses from time and weather tasks.
|
|
8
|
+
5. Real-time display of time and weather information and agent thinking process.
|
|
9
|
+
|
|
10
|
+
The client requests the time/weather agent to get current time and weather forecast,
|
|
11
|
+
demonstrating streaming capabilities of the LangGraph agent wrapper.
|
|
12
|
+
|
|
13
|
+
To run this example:
|
|
14
|
+
1. First start the time/weather agent server:
|
|
15
|
+
python examples/hello_world_a2a_langgraph_server_tool_streaming.py --port 8003
|
|
16
|
+
2. Then run this client:
|
|
17
|
+
python examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py
|
|
18
|
+
|
|
19
|
+
Environment Variables Required:
|
|
20
|
+
OPENAI_API_KEY: OpenAI API key for the LLM
|
|
21
|
+
|
|
22
|
+
Authors:
|
|
23
|
+
Fachriza Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
import asyncio
|
|
27
|
+
from pprint import pprint
|
|
28
|
+
|
|
29
|
+
from aip_agents.agent import LangChainAgent
|
|
30
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
async def main():
|
|
34
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A time/weather capabilities."""
|
|
35
|
+
print("š Starting Time & Weather Agent Client Demo")
|
|
36
|
+
print("=" * 60)
|
|
37
|
+
|
|
38
|
+
# Create a general assistant agent
|
|
39
|
+
agent = LangChainAgent(
|
|
40
|
+
name="TimeWeatherAssistantAgentLangChain",
|
|
41
|
+
instruction="""You are a helpful assistant that can help with various tasks
|
|
42
|
+
by delegating to specialized agents. You have access to time and weather
|
|
43
|
+
agents that can provide current time information and weather data
|
|
44
|
+
for specific cities.
|
|
45
|
+
|
|
46
|
+
When users ask for time or weather-related tasks, delegate them to the
|
|
47
|
+
time/weather agent. Provide clear summaries of the results and help
|
|
48
|
+
interpret the information that's provided.""",
|
|
49
|
+
model="openai/gpt-4o",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# Configure A2A client to discover time/weather agents
|
|
53
|
+
client_a2a_config = A2AClientConfig(
|
|
54
|
+
discovery_urls=["http://localhost:8003"], # Time/weather agent server
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
print("š Discovering available time & weather agents...")
|
|
58
|
+
try:
|
|
59
|
+
agent_cards = agent.discover_agents(client_a2a_config)
|
|
60
|
+
|
|
61
|
+
if not agent_cards:
|
|
62
|
+
print("ā No time & weather agents found!")
|
|
63
|
+
print(" Make sure the agent server is running on http://localhost:8003")
|
|
64
|
+
return
|
|
65
|
+
|
|
66
|
+
print(f"ā
Found {len(agent_cards)} time & weather agent(s)")
|
|
67
|
+
|
|
68
|
+
for i, card in enumerate(agent_cards):
|
|
69
|
+
print(f" {i + 1}. {card.name}: {card.description}")
|
|
70
|
+
if card.skills:
|
|
71
|
+
print(f" Skills: {', '.join([skill.name for skill in card.skills])}")
|
|
72
|
+
|
|
73
|
+
task = "what time is it and what is the weather in jakarta?"
|
|
74
|
+
|
|
75
|
+
print(f"š Task: {task}")
|
|
76
|
+
|
|
77
|
+
async for chunk in agent.astream_to_agent(agent_card=agent_cards[0], message=task):
|
|
78
|
+
print("-" * 40)
|
|
79
|
+
pprint(chunk)
|
|
80
|
+
|
|
81
|
+
print("\n" + "=" * 60)
|
|
82
|
+
print("\nš Time & Weather agent task finished!")
|
|
83
|
+
|
|
84
|
+
except Exception as e:
|
|
85
|
+
print(f"ā Error during time & weather query: {str(e)}")
|
|
86
|
+
print(" Make sure:")
|
|
87
|
+
print(" 1. The time & weather server is running (python hello_world_a2a_langgraph_server_agent_wrapper.py)")
|
|
88
|
+
print(" 2. OPENAI_API_KEY is set in your environment")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from aip_agents.agent import LangChainAgent as LangChainAgent
|
|
2
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
3
|
+
|
|
4
|
+
async def main() -> None:
|
|
5
|
+
"""Main function demonstrating the General Assistant agent with streaming A2A time/weather capabilities."""
|