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,41 @@
|
|
|
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
|
+
"""
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
|
|
15
|
+
from langchain_openai import ChatOpenAI
|
|
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=ChatOpenAI(model="gpt-4.1", streaming=True, temperature=0),
|
|
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(agent_card=agent_cards[0], message="What is the weather in Jakarta?"):
|
|
37
|
+
print(chunk.get("content", ""))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
if __name__ == "__main__":
|
|
41
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Example A2A streaming client for the Google Search Tool and Time Tool Server.
|
|
2
|
+
|
|
3
|
+
This client demonstrates streaming interaction with the reference server
|
|
4
|
+
that provides time and mock Google search functionality via A2A protocol.
|
|
5
|
+
|
|
6
|
+
To use this client:
|
|
7
|
+
1. First start the reference server: python hello_world_a2a_langchain_reference_server.py
|
|
8
|
+
2. Then run this client: python hello_world_a2a_langchain_reference_client_streaming.py
|
|
9
|
+
|
|
10
|
+
Authors:
|
|
11
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import asyncio
|
|
15
|
+
import pprint
|
|
16
|
+
|
|
17
|
+
from langchain_openai import ChatOpenAI
|
|
18
|
+
|
|
19
|
+
from aip_agents.agent import LangChainAgent
|
|
20
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
async def main():
|
|
24
|
+
"""Main function demonstrating streaming A2A client for the reference server."""
|
|
25
|
+
agent = LangChainAgent(
|
|
26
|
+
name="ReferenceClientAgent",
|
|
27
|
+
instruction="""You are a helpful assistant that can delegate tasks to specialized agents.
|
|
28
|
+
You can ask the mock retrieval server for mock data or mock Google search results.""",
|
|
29
|
+
model=ChatOpenAI(model="gpt-4.1", streaming=True, temperature=0),
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Discover agents
|
|
33
|
+
client_a2a_config = A2AClientConfig(
|
|
34
|
+
discovery_urls=["http://localhost:8455"],
|
|
35
|
+
)
|
|
36
|
+
agent_cards = agent.discover_agents(client_a2a_config)
|
|
37
|
+
|
|
38
|
+
if not agent_cards:
|
|
39
|
+
print("No agents discovered. Make sure the reference server is running on http://localhost:8455")
|
|
40
|
+
return
|
|
41
|
+
|
|
42
|
+
print(f"Discovered agent: {agent_cards[0].name}")
|
|
43
|
+
print(f"Description: {agent_cards[0].description}")
|
|
44
|
+
print(f"Skills: {[skill.name for skill in agent_cards[0].skills]}")
|
|
45
|
+
|
|
46
|
+
# Test queries to demonstrate the server's capabilities
|
|
47
|
+
test_queries = "Search for information about NeoAI and retrieve some mock data about artificial intelligence"
|
|
48
|
+
|
|
49
|
+
print(f"\n{'=' * 60}")
|
|
50
|
+
print(f"Query: {test_queries}")
|
|
51
|
+
print(f"{'=' * 60}")
|
|
52
|
+
|
|
53
|
+
async for chunk in agent.astream_to_agent(agent_card=agent_cards[0], message=test_queries):
|
|
54
|
+
print("-" * 50)
|
|
55
|
+
pprint.pprint(chunk)
|
|
56
|
+
print("-" * 50)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
if __name__ == "__main__":
|
|
60
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"""Example A2A server for a LangChainAgent Weather Service.
|
|
2
|
+
|
|
3
|
+
This server instantiates a LangChainAgent with weather lookup capabilities and serves it
|
|
4
|
+
via the A2A protocol using the to_a2a convenience method.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/hello_world_a2a_langchain_server.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8001 by default.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import click
|
|
16
|
+
import uvicorn
|
|
17
|
+
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
|
|
18
|
+
from langchain_openai import ChatOpenAI
|
|
19
|
+
|
|
20
|
+
from aip_agents.agent import LangChainAgent
|
|
21
|
+
from aip_agents.examples.tools import google_serper_tool, mock_retrieval_tool, time_tool
|
|
22
|
+
from aip_agents.utils.logger import get_logger
|
|
23
|
+
|
|
24
|
+
logger = get_logger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
SERVER_AGENT_NAME = "Mock Retrieval Tool and Google Search Tool Server"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@click.command()
|
|
31
|
+
@click.option("--host", "host", default="localhost", help="Host to bind the server to.")
|
|
32
|
+
@click.option("--port", "port", default=8455, help="Port to bind the server to.")
|
|
33
|
+
def main(host: str, port: int):
|
|
34
|
+
"""Runs the LangChain Mock Retrieval and Google Search A2A server.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
host (str): Host to bind the server to.
|
|
38
|
+
port (int): Port to bind the server to.
|
|
39
|
+
"""
|
|
40
|
+
logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
|
|
41
|
+
|
|
42
|
+
agent_card = AgentCard(
|
|
43
|
+
name=SERVER_AGENT_NAME,
|
|
44
|
+
description="A server that provides mock retrieval data and mock google search information",
|
|
45
|
+
url=f"http://{host}:{port}",
|
|
46
|
+
version="1.0.0",
|
|
47
|
+
defaultInputModes=["text"],
|
|
48
|
+
defaultOutputModes=["text"],
|
|
49
|
+
capabilities=AgentCapabilities(streaming=True),
|
|
50
|
+
skills=[
|
|
51
|
+
AgentSkill(
|
|
52
|
+
id="mock_retrieval",
|
|
53
|
+
name="Mock Data Retrieval",
|
|
54
|
+
description="Retrieves mock data and returns references for testing.",
|
|
55
|
+
examples=["Retrieve mock data", "Get test information"],
|
|
56
|
+
tags=["retrieval", "mock"],
|
|
57
|
+
),
|
|
58
|
+
AgentSkill(
|
|
59
|
+
id="google_serper",
|
|
60
|
+
name="Mock Google Search",
|
|
61
|
+
description="Provides mock google search information.",
|
|
62
|
+
examples=["What is NeoAI?", "Get NeoAI"],
|
|
63
|
+
tags=["google serper"],
|
|
64
|
+
),
|
|
65
|
+
],
|
|
66
|
+
tags=["retrieval", "mock", "google serper"],
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
time_delegate_agent = LangChainAgent(
|
|
70
|
+
name="TimeLookupAgent",
|
|
71
|
+
instruction="""You are a specialized time lookup assistant.
|
|
72
|
+
Always answer user queries by calling the `time_tool` to obtain the most up-to-date information.""",
|
|
73
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0, streaming=True),
|
|
74
|
+
tools=[time_tool()],
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
google_delegate_agent = LangChainAgent(
|
|
78
|
+
name="GoogleSerperAgent",
|
|
79
|
+
instruction="""You are a specialized research assistant that must use the `google_serper_tool`
|
|
80
|
+
for every query. Provide concise summaries using the tool output.""",
|
|
81
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0, streaming=True),
|
|
82
|
+
tools=[google_serper_tool()],
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
langchain_agent = LangChainAgent(
|
|
86
|
+
name=SERVER_AGENT_NAME,
|
|
87
|
+
instruction="""You are a coordinator agent that delegates research tasks to sub-agents but uses
|
|
88
|
+
mock_retrieval_tool directly. For research questions, delegate to `GoogleSerperAgent`.
|
|
89
|
+
For retrieval queries, use the mock_retrieval_tool directly. Synthesize their responses
|
|
90
|
+
and present a clear combined answer.""",
|
|
91
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0, streaming=True),
|
|
92
|
+
tools=[mock_retrieval_tool()], # Direct tool usage
|
|
93
|
+
agents=[time_delegate_agent, google_delegate_agent], # Delegation for others
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
app = langchain_agent.to_a2a(
|
|
97
|
+
agent_card=agent_card,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
uvicorn.run(app, host=host, port=port)
|
|
101
|
+
logger.info("A2A application configured. Starting Uvicorn server...")
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
if __name__ == "__main__":
|
|
105
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangChainAgent as LangChainAgent
|
|
3
|
+
from aip_agents.examples.tools import google_serper_tool as google_serper_tool, mock_retrieval_tool as mock_retrieval_tool, time_tool as time_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 LangChain Mock Retrieval and Google Search 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,79 @@
|
|
|
1
|
+
"""Example A2A server for a LangChainAgent Weather Service.
|
|
2
|
+
|
|
3
|
+
This server instantiates a LangChainAgent with weather lookup capabilities and serves it
|
|
4
|
+
via the A2A protocol using the to_a2a convenience method.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/hello_world_a2a_langchain_server.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8001 by default.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import click
|
|
16
|
+
import uvicorn
|
|
17
|
+
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
|
|
18
|
+
from langchain_openai import ChatOpenAI
|
|
19
|
+
|
|
20
|
+
from aip_agents.agent import LangChainAgent
|
|
21
|
+
from aip_agents.examples.tools.langchain_weather_tool import weather_tool
|
|
22
|
+
from aip_agents.utils.logger import get_logger
|
|
23
|
+
|
|
24
|
+
logger = get_logger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
SERVER_AGENT_NAME = "Weather Agent LangChain"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@click.command()
|
|
31
|
+
@click.option("--host", "host", default="localhost", help="Host to bind the server to.")
|
|
32
|
+
@click.option("--port", "port", default=8001, help="Port to bind the server to.")
|
|
33
|
+
def main(host: str, port: int):
|
|
34
|
+
"""Runs the LangChain Weather A2A server.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
host (str): Host to bind the server to.
|
|
38
|
+
port (int): Port to bind the server to.
|
|
39
|
+
"""
|
|
40
|
+
logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
|
|
41
|
+
|
|
42
|
+
agent_card = AgentCard(
|
|
43
|
+
name=SERVER_AGENT_NAME,
|
|
44
|
+
description="A weather agent that provides weather information for cities",
|
|
45
|
+
url=f"http://{host}:{port}",
|
|
46
|
+
version="1.0.0",
|
|
47
|
+
defaultInputModes=["text"],
|
|
48
|
+
defaultOutputModes=["text"],
|
|
49
|
+
capabilities=AgentCapabilities(streaming=True),
|
|
50
|
+
skills=[
|
|
51
|
+
AgentSkill(
|
|
52
|
+
id="weather",
|
|
53
|
+
name="Weather Lookup",
|
|
54
|
+
description="Provides current weather information for cities.",
|
|
55
|
+
examples=["What's the weather in Tokyo?", "Get weather for London"],
|
|
56
|
+
tags=["weather"],
|
|
57
|
+
)
|
|
58
|
+
],
|
|
59
|
+
tags=["weather"],
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
langchain_agent = LangChainAgent(
|
|
63
|
+
name=SERVER_AGENT_NAME,
|
|
64
|
+
instruction="""You are a weather agent that provides weather information for cities.
|
|
65
|
+
Always use the weather_tool for looking up weather data. Format your responses clearly and professionally.""",
|
|
66
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
67
|
+
tools=[weather_tool],
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
app = langchain_agent.to_a2a(
|
|
71
|
+
agent_card=agent_card,
|
|
72
|
+
)
|
|
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 import LangChainAgent as LangChainAgent
|
|
3
|
+
from aip_agents.examples.tools.langchain_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 LangChain 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,78 @@
|
|
|
1
|
+
"""Example A2A server for a LangChainAgent Weather Service.
|
|
2
|
+
|
|
3
|
+
This server instantiates a LangChainAgent with weather lookup capabilities and serves it
|
|
4
|
+
via the A2A protocol using the to_a2a convenience method.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/a2a/langchain_server_example.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8001 by default.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
Putu Ravindra Wiguna (putu.r.wiguna@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 LangChainAgent
|
|
20
|
+
from aip_agents.examples.tools.langchain_weather_tool import weather_tool
|
|
21
|
+
from aip_agents.utils.logger import get_logger
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
SERVER_AGENT_NAME = "WeatherAgentLangChain"
|
|
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=8001, help="Port to bind the server to.")
|
|
32
|
+
def main(host: str, port: int):
|
|
33
|
+
"""Runs the LangChain 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 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
|
+
langchain_agent = LangChainAgent(
|
|
62
|
+
name=SERVER_AGENT_NAME,
|
|
63
|
+
instruction="""You are a weather agent that provides weather information for cities.
|
|
64
|
+
Always use the weather_tool for looking up weather data. Format your responses clearly and professionally.""",
|
|
65
|
+
model="openai/gpt-4o",
|
|
66
|
+
tools=[weather_tool],
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
app = langchain_agent.to_a2a(
|
|
70
|
+
agent_card=agent_card,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
uvicorn.run(app, host=host, port=port)
|
|
74
|
+
logger.info("A2A application configured. Starting Uvicorn server...")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent import LangChainAgent as LangChainAgent
|
|
3
|
+
from aip_agents.examples.tools.langchain_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 LangChain 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,83 @@
|
|
|
1
|
+
"""Example of a LangflowAgent client that can interact with A2A servers via streaming.
|
|
2
|
+
|
|
3
|
+
This example demonstrates:
|
|
4
|
+
1. Configuring A2A settings for a client agent.
|
|
5
|
+
2. Discovering and communicating with Langflow agents via A2A.
|
|
6
|
+
3. Using streaming A2A communication for real-time responses.
|
|
7
|
+
4. Handling streaming responses and providing relevant interactions.
|
|
8
|
+
|
|
9
|
+
Authors:
|
|
10
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
|
|
15
|
+
from dotenv import load_dotenv
|
|
16
|
+
|
|
17
|
+
from aip_agents.agent.langflow_agent import LangflowAgent
|
|
18
|
+
from aip_agents.schema.agent import A2AClientConfig
|
|
19
|
+
from aip_agents.utils.logger import get_logger
|
|
20
|
+
|
|
21
|
+
logger = get_logger(__name__)
|
|
22
|
+
load_dotenv()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
async def main():
|
|
26
|
+
"""Main function demonstrating the Langflow client with streaming A2A capabilities."""
|
|
27
|
+
# Create the LangflowAgent client
|
|
28
|
+
client_agent = LangflowAgent(
|
|
29
|
+
name="LangflowA2AClient",
|
|
30
|
+
flow_id="dummy-flow-id", # Not used for client operations
|
|
31
|
+
description="Client agent for A2A streaming testing",
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Discover agents
|
|
35
|
+
client_a2a_config = A2AClientConfig(
|
|
36
|
+
discovery_urls=["http://localhost:8787"],
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
print("š Discovering A2A agents...")
|
|
40
|
+
agent_cards = client_agent.discover_agents(client_a2a_config)
|
|
41
|
+
|
|
42
|
+
if not agent_cards:
|
|
43
|
+
logger.error("ā No agents discovered!")
|
|
44
|
+
print("š” Make sure the A2A server is running:")
|
|
45
|
+
print(" python aip_agents/examples/hello_world_a2a_langflow_server.py")
|
|
46
|
+
return
|
|
47
|
+
|
|
48
|
+
print(f"ā
Discovered {len(agent_cards)} agent(s):")
|
|
49
|
+
for i, agent_card in enumerate(agent_cards, 1):
|
|
50
|
+
print(f" {i}. {agent_card.name} - {agent_card.description}")
|
|
51
|
+
|
|
52
|
+
# Use streaming A2A communication
|
|
53
|
+
query = "Tell me a short story about a robot learning to paint"
|
|
54
|
+
print(f"\nš” Streaming Query: {query}")
|
|
55
|
+
print("šÆ Response (streaming):")
|
|
56
|
+
print("-" * 50)
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
chunk_count = 0
|
|
60
|
+
|
|
61
|
+
async for chunk in client_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
|
|
62
|
+
chunk_count += 1
|
|
63
|
+
content = chunk.get("content", "")
|
|
64
|
+
status = chunk.get("status", "unknown")
|
|
65
|
+
is_final = chunk.get("final", False)
|
|
66
|
+
|
|
67
|
+
if content:
|
|
68
|
+
if status == "success":
|
|
69
|
+
print(content)
|
|
70
|
+
else:
|
|
71
|
+
print(f"\n[{status}] {content}")
|
|
72
|
+
|
|
73
|
+
# Log completion but don't break - let stream finish naturally
|
|
74
|
+
if is_final:
|
|
75
|
+
print(f"\n\nā
Stream completed! ({chunk_count} chunks received)")
|
|
76
|
+
|
|
77
|
+
except Exception as e:
|
|
78
|
+
logger.error(f"ā Streaming error: {e}")
|
|
79
|
+
print(f"Error during A2A streaming: {e}")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
if __name__ == "__main__":
|
|
83
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.langflow_agent import LangflowAgent as LangflowAgent
|
|
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 Langflow client with streaming A2A capabilities."""
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Example A2A server for a LangflowAgent.
|
|
2
|
+
|
|
3
|
+
This server instantiates a LangflowAgent and serves it via the A2A protocol
|
|
4
|
+
using the proper A2A server setup.
|
|
5
|
+
|
|
6
|
+
To run this server:
|
|
7
|
+
python examples/hello_world_a2a_langflow_server.py
|
|
8
|
+
|
|
9
|
+
It will listen on http://localhost:8787 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
|
+
from dotenv import load_dotenv
|
|
19
|
+
|
|
20
|
+
from aip_agents.agent.langflow_agent import LangflowAgent
|
|
21
|
+
from aip_agents.utils.logger import get_logger
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
SERVER_AGENT_NAME = "LangflowA2AServer"
|
|
26
|
+
load_dotenv()
|
|
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=8787, help="Port to bind the server to.")
|
|
32
|
+
def main(host: str, port: int):
|
|
33
|
+
"""Runs the Langflow 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 Langflow agent that provides AI assistance through A2A protocol",
|
|
44
|
+
url=f"http://{host}:{port}",
|
|
45
|
+
version="1.0.0",
|
|
46
|
+
author="AIP Agents SDK",
|
|
47
|
+
defaultInputModes=["text"],
|
|
48
|
+
defaultOutputModes=["text"],
|
|
49
|
+
capabilities=AgentCapabilities(streaming=True),
|
|
50
|
+
skills=[
|
|
51
|
+
AgentSkill(
|
|
52
|
+
id="general_assistance",
|
|
53
|
+
name="General Assistance",
|
|
54
|
+
description="Provides general AI assistance through Langflow",
|
|
55
|
+
examples=[
|
|
56
|
+
"Answer questions about any topic",
|
|
57
|
+
"Help with writing and editing",
|
|
58
|
+
"Provide explanations and analysis",
|
|
59
|
+
"Creative content generation",
|
|
60
|
+
],
|
|
61
|
+
tags=["ai", "assistant", "langflow", "chat"],
|
|
62
|
+
)
|
|
63
|
+
],
|
|
64
|
+
tags=["langflow", "ai", "assistant"],
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Create the Langflow agent
|
|
68
|
+
langflow_agent = LangflowAgent(
|
|
69
|
+
name=SERVER_AGENT_NAME,
|
|
70
|
+
flow_id="6dd45ac0-5c05-44c1-9825-66c6c6e516f7",
|
|
71
|
+
description="A Langflow agent that provides AI assistance through A2A protocol",
|
|
72
|
+
base_url="https://langflow.obrol.id",
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
app = langflow_agent.to_a2a(agent_card=agent_card)
|
|
76
|
+
|
|
77
|
+
logger.info("A2A application configured. Starting Uvicorn server...")
|
|
78
|
+
uvicorn.run(app, host=host, port=port)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
if __name__ == "__main__":
|
|
82
|
+
main()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.agent.langflow_agent import LangflowAgent as LangflowAgent
|
|
3
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
4
|
+
|
|
5
|
+
logger: Incomplete
|
|
6
|
+
SERVER_AGENT_NAME: str
|
|
7
|
+
|
|
8
|
+
def main(host: str, port: int):
|
|
9
|
+
"""Runs the Langflow A2A server.
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
host (str): Host to bind the server to.
|
|
13
|
+
port (int): Port to bind the server to.
|
|
14
|
+
"""
|