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,163 @@
|
|
|
1
|
+
"""Example demonstrating basic Langflow agent usage.
|
|
2
|
+
|
|
3
|
+
This example shows how to create and use a LangflowAgent for both
|
|
4
|
+
synchronous and asynchronous execution modes.
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import asyncio
|
|
11
|
+
import os
|
|
12
|
+
import uuid
|
|
13
|
+
|
|
14
|
+
from dotenv import load_dotenv
|
|
15
|
+
|
|
16
|
+
from aip_agents.agent.langflow_agent import LangflowAgent
|
|
17
|
+
from aip_agents.clients.langflow import LangflowApiClient
|
|
18
|
+
|
|
19
|
+
load_dotenv()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def fetch_flow_id() -> tuple[str, str]:
|
|
23
|
+
"""Fetch available flows and return the first flow ID and name."""
|
|
24
|
+
print("Fetching available flows...")
|
|
25
|
+
temp_client = LangflowApiClient(base_url="https://langflow.obrol.id", api_key=os.getenv("LANGFLOW_API_KEY"))
|
|
26
|
+
|
|
27
|
+
try:
|
|
28
|
+
flows = await temp_client.get_all_flows(remove_example_flows=True)
|
|
29
|
+
print(flows)
|
|
30
|
+
|
|
31
|
+
if not flows:
|
|
32
|
+
print("❌ No flows found!")
|
|
33
|
+
return "", ""
|
|
34
|
+
|
|
35
|
+
print(f"Found {len(flows)} flows:")
|
|
36
|
+
for i, flow in enumerate(flows[:5]): # Show first 5 flows
|
|
37
|
+
flow_name = flow.get("name", "Unnamed")
|
|
38
|
+
flow_id = flow.get("id", "No ID")
|
|
39
|
+
print(f" {i + 1}. {flow_name} (ID: {flow_id})")
|
|
40
|
+
|
|
41
|
+
selected_flow = flows[2]
|
|
42
|
+
flow_id = selected_flow.get("id")
|
|
43
|
+
flow_name = selected_flow.get("name", "Unknown Flow")
|
|
44
|
+
|
|
45
|
+
if not flow_id:
|
|
46
|
+
print("❌ Selected flow has no ID!")
|
|
47
|
+
return "", ""
|
|
48
|
+
|
|
49
|
+
print(f"✅ Selected flow: {flow_name} (ID: {flow_id})")
|
|
50
|
+
print("-" * 50)
|
|
51
|
+
return flow_id, flow_name
|
|
52
|
+
|
|
53
|
+
except Exception as e:
|
|
54
|
+
print(f"❌ Error fetching flows: {e}")
|
|
55
|
+
print("Falling back to hardcoded flow ID...")
|
|
56
|
+
return "6dd45ac0-5c05-44c1-9825-66c6c6e516f7", "Fallback Flow"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
async def create_agent(flow_id: str, flow_name: str) -> LangflowAgent:
|
|
60
|
+
"""Create and configure the Langflow agent.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
flow_id (str): The flow ID to use for the agent.
|
|
64
|
+
flow_name (str): The name of the flow.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
LangflowAgent: The configured Langflow agent.
|
|
68
|
+
"""
|
|
69
|
+
agent = LangflowAgent(
|
|
70
|
+
name="HelloWorldLangflow",
|
|
71
|
+
flow_id=flow_id,
|
|
72
|
+
description=f"A Langflow agent using flow: {flow_name}",
|
|
73
|
+
base_url="https://langflow.obrol.id",
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
print(f"Created agent: {agent.name}")
|
|
77
|
+
print(f"Flow ID: {flow_id}")
|
|
78
|
+
print(f"API Base URL: {agent.api_client.base_url}")
|
|
79
|
+
|
|
80
|
+
# Test health check
|
|
81
|
+
print("Testing health check...")
|
|
82
|
+
is_healthy = await agent.health_check()
|
|
83
|
+
print(f"API Health: {'✓ Healthy' if is_healthy else '✗ Unhealthy'}")
|
|
84
|
+
print("-" * 50)
|
|
85
|
+
|
|
86
|
+
return agent
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
async def demonstrate_regular_execution(agent: LangflowAgent) -> None:
|
|
90
|
+
"""Demonstrate regular execution.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
94
|
+
"""
|
|
95
|
+
print("Example 1: Regular execution")
|
|
96
|
+
result1 = await agent.arun("Hello, how are you?")
|
|
97
|
+
print(f"Message 1: {result1}")
|
|
98
|
+
print("-" * 50)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
async def demonstrate_streaming(agent: LangflowAgent) -> None:
|
|
102
|
+
"""Demonstrate streaming execution.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
106
|
+
"""
|
|
107
|
+
print("Example 2: Regular streaming")
|
|
108
|
+
try:
|
|
109
|
+
print("Streaming response:")
|
|
110
|
+
async for chunk in agent.arun_stream("Hello, how are you?"):
|
|
111
|
+
print(chunk)
|
|
112
|
+
print() # New line after streaming
|
|
113
|
+
except Exception as e:
|
|
114
|
+
print(f"Streaming Error: {e}")
|
|
115
|
+
print("-" * 50)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
async def demonstrate_session_management(agent: LangflowAgent) -> None:
|
|
119
|
+
"""Demonstrate session management.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
123
|
+
"""
|
|
124
|
+
print("Example 3: Session management")
|
|
125
|
+
session_id = f"conversation-{uuid.uuid4()}"
|
|
126
|
+
try:
|
|
127
|
+
# First message with thread_id
|
|
128
|
+
result1 = await agent.arun("My name is Alice", configurable={"thread_id": session_id})
|
|
129
|
+
print(f"Message 1: {result1}")
|
|
130
|
+
|
|
131
|
+
# Second message in same thread - should remember context
|
|
132
|
+
result2 = await agent.arun("What's my name?", configurable={"thread_id": session_id})
|
|
133
|
+
print(f"Message 2: {result2}")
|
|
134
|
+
|
|
135
|
+
# Third message in different thread - should not remember
|
|
136
|
+
result3 = await agent.arun("What's my name?", configurable={"thread_id": f"new-conversation-{uuid.uuid4()}"})
|
|
137
|
+
print(f"Message 3 (new thread): {result3}")
|
|
138
|
+
|
|
139
|
+
except Exception as e:
|
|
140
|
+
print(f"Session Error: {e}")
|
|
141
|
+
print("-" * 50)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
async def main():
|
|
145
|
+
"""Demonstrate basic Langflow agent usage."""
|
|
146
|
+
# Fetch flow ID and name
|
|
147
|
+
flow_id, flow_name = await fetch_flow_id()
|
|
148
|
+
if not flow_id:
|
|
149
|
+
return
|
|
150
|
+
|
|
151
|
+
# Create agent
|
|
152
|
+
agent = await create_agent(flow_id, flow_name)
|
|
153
|
+
|
|
154
|
+
# Run demonstrations
|
|
155
|
+
await demonstrate_regular_execution(agent)
|
|
156
|
+
await demonstrate_streaming(agent)
|
|
157
|
+
await demonstrate_session_management(agent)
|
|
158
|
+
|
|
159
|
+
print("Demo completed!")
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
if __name__ == "__main__":
|
|
163
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from aip_agents.agent.langflow_agent import LangflowAgent as LangflowAgent
|
|
2
|
+
from aip_agents.clients.langflow import LangflowApiClient as LangflowApiClient
|
|
3
|
+
|
|
4
|
+
async def fetch_flow_id() -> tuple[str, str]:
|
|
5
|
+
"""Fetch available flows and return the first flow ID and name."""
|
|
6
|
+
async def create_agent(flow_id: str, flow_name: str) -> LangflowAgent:
|
|
7
|
+
"""Create and configure the Langflow agent.
|
|
8
|
+
|
|
9
|
+
Args:
|
|
10
|
+
flow_id (str): The flow ID to use for the agent.
|
|
11
|
+
flow_name (str): The name of the flow.
|
|
12
|
+
|
|
13
|
+
Returns:
|
|
14
|
+
LangflowAgent: The configured Langflow agent.
|
|
15
|
+
"""
|
|
16
|
+
async def demonstrate_regular_execution(agent: LangflowAgent) -> None:
|
|
17
|
+
"""Demonstrate regular execution.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
21
|
+
"""
|
|
22
|
+
async def demonstrate_streaming(agent: LangflowAgent) -> None:
|
|
23
|
+
"""Demonstrate streaming execution.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
27
|
+
"""
|
|
28
|
+
async def demonstrate_session_management(agent: LangflowAgent) -> None:
|
|
29
|
+
"""Demonstrate session management.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
agent (LangflowAgent): The Langflow agent to demonstrate with.
|
|
33
|
+
"""
|
|
34
|
+
async def main() -> None:
|
|
35
|
+
"""Demonstrate basic Langflow agent usage."""
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Minimal LangGraph agent example demonstrating asynchronous run."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
|
|
5
|
+
from langchain_openai import ChatOpenAI
|
|
6
|
+
|
|
7
|
+
from aip_agents.agent import LangGraphAgent
|
|
8
|
+
from aip_agents.examples.tools.langchain_arithmetic_tools import add_numbers
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async def langgraph_example():
|
|
12
|
+
"""Demonstrates the LangGraphAgent's arun method."""
|
|
13
|
+
model = ChatOpenAI(model="gpt-4.1", temperature=0)
|
|
14
|
+
tools = [add_numbers]
|
|
15
|
+
agent_name = "LangGraphArithmeticAgent"
|
|
16
|
+
|
|
17
|
+
langgraph_agent = LangGraphAgent(
|
|
18
|
+
name=agent_name,
|
|
19
|
+
instruction="You are a helpful assistant that can add two numbers using the add_numbers tool.",
|
|
20
|
+
model=model,
|
|
21
|
+
tools=tools,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
query = "What is the sum of 23 and 47? And then add 10 to that, then add 5 more."
|
|
25
|
+
print(f"--- Agent: {agent_name} ---")
|
|
26
|
+
print(f"Query: {query}")
|
|
27
|
+
|
|
28
|
+
print("\nRunning arun...")
|
|
29
|
+
response = await langgraph_agent.arun(
|
|
30
|
+
query=query,
|
|
31
|
+
configurable={"configurable": {"thread_id": "lgraph_arith_example_arun"}},
|
|
32
|
+
)
|
|
33
|
+
print(f"[arun] Final Response: {response['output']}")
|
|
34
|
+
print("--- End of LangGraph Example ---")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
if __name__ == "__main__":
|
|
38
|
+
# OPENAI_API_KEY should be set in the environment.
|
|
39
|
+
asyncio.run(langgraph_example())
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Minimal LangGraph agent with GL Connectors support example demonstrating asynchronous run.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Saul Sayers (saul.sayers@gdplabs.id)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import asyncio
|
|
8
|
+
|
|
9
|
+
from dotenv import load_dotenv
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.tools import GL_CONNECTORS_AUTOMATED_TOOLS
|
|
14
|
+
|
|
15
|
+
load_dotenv(override=True)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
async def langgraph_gl_connector_example():
|
|
19
|
+
"""Demonstrates the LangGraphAgent's arun method."""
|
|
20
|
+
model = ChatOpenAI(model="gpt-4.1", temperature=0)
|
|
21
|
+
agent_name = "GLConnectorTwitterAgent"
|
|
22
|
+
|
|
23
|
+
langgraph_agent = LangGraphAgent(
|
|
24
|
+
name=agent_name,
|
|
25
|
+
instruction="You are a helpful assistant that uses GL Connectors to connect with the Twitter API.",
|
|
26
|
+
model=model,
|
|
27
|
+
tools=GL_CONNECTORS_AUTOMATED_TOOLS["twitter"],
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
query = "Get 3 tweets about the latest Air India Incident"
|
|
31
|
+
print(f"--- Agent: {agent_name} ---")
|
|
32
|
+
print(f"Query: {query}")
|
|
33
|
+
|
|
34
|
+
print("\nRunning arun...")
|
|
35
|
+
response = await langgraph_agent.arun(
|
|
36
|
+
query=query,
|
|
37
|
+
configurable={"configurable": {"thread_id": "lgraph_arith_example_arun"}},
|
|
38
|
+
)
|
|
39
|
+
print(f"[arun] Final Response: {response['output']}")
|
|
40
|
+
print("--- End of LangGraph Example ---")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
if __name__ == "__main__":
|
|
44
|
+
asyncio.run(langgraph_gl_connector_example())
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_http
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via Streamable HTTP transport."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
)
|
|
24
|
+
langgraph_agent.add_mcp_server(mcp_config_http)
|
|
25
|
+
|
|
26
|
+
response = await langgraph_agent.arun(query="What's the weather forecast for monday?")
|
|
27
|
+
print(f"Response: {response['output']}")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if __name__ == "__main__":
|
|
31
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration and streaming capabilities.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_http
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via Streamable HTTP transport and streaming capabilities."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_stream_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
)
|
|
24
|
+
langgraph_agent.add_mcp_server(mcp_config_http)
|
|
25
|
+
|
|
26
|
+
async for chunk in langgraph_agent.arun_stream(
|
|
27
|
+
query="What's the weather forecast for monday?",
|
|
28
|
+
):
|
|
29
|
+
if isinstance(chunk, str):
|
|
30
|
+
print(chunk, end="", flush=True)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if __name__ == "__main__":
|
|
34
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
2
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_http as mcp_config_http
|
|
3
|
+
|
|
4
|
+
async def main() -> None:
|
|
5
|
+
"""Demonstrates the LangGraphAgent with MCP tools via Streamable HTTP transport and streaming capabilities."""
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_sse
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via SSE transport."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
tools=[],
|
|
24
|
+
)
|
|
25
|
+
langgraph_agent.add_mcp_server(mcp_config_sse)
|
|
26
|
+
|
|
27
|
+
query = "What's the weather forecast for monday?" # Uses MCP weather tool
|
|
28
|
+
|
|
29
|
+
print(f"\nQuery: {query}")
|
|
30
|
+
response = await langgraph_agent.arun(query=query)
|
|
31
|
+
print(f"Response: {response['output']}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
if __name__ == "__main__":
|
|
35
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration and streaming capabilities.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_sse
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via SSE transport and streaming capabilities."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_stream_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
tools=[],
|
|
24
|
+
)
|
|
25
|
+
langgraph_agent.add_mcp_server(mcp_config_sse)
|
|
26
|
+
|
|
27
|
+
query = "What's the weather forecast for monday?" # Uses MCP weather tool
|
|
28
|
+
|
|
29
|
+
stream_thread_id = "langgraph_mcp_stream_example"
|
|
30
|
+
|
|
31
|
+
print(f"\nQuery: {query}")
|
|
32
|
+
print("Streaming response:")
|
|
33
|
+
|
|
34
|
+
full_response = ""
|
|
35
|
+
async for chunk in langgraph_agent.arun_stream(
|
|
36
|
+
query=query, configurable={"configurable": {"thread_id": stream_thread_id}}
|
|
37
|
+
):
|
|
38
|
+
if isinstance(chunk, str):
|
|
39
|
+
print(chunk, end="", flush=True)
|
|
40
|
+
full_response += chunk
|
|
41
|
+
elif isinstance(chunk, dict) and "messages" in chunk:
|
|
42
|
+
print("\n(Stream finished with final state object)")
|
|
43
|
+
elif isinstance(chunk, dict):
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
print(f"\nFull response collected: {full_response}")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
2
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_sse as mcp_config_sse
|
|
3
|
+
|
|
4
|
+
async def main() -> None:
|
|
5
|
+
"""Demonstrates the LangGraphAgent with MCP tools via SSE transport and streaming capabilities."""
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration using stdio transport.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_stdio
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via stdio transport."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
tools=[],
|
|
24
|
+
)
|
|
25
|
+
langgraph_agent.add_mcp_server(mcp_config_stdio)
|
|
26
|
+
|
|
27
|
+
query = "What's the weather forecast for monday?" # Uses MCP weather tool
|
|
28
|
+
|
|
29
|
+
print(f"\nQuery: {query}")
|
|
30
|
+
response = await langgraph_agent.arun(query=query)
|
|
31
|
+
print(f"Response: {response['output']}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
if __name__ == "__main__":
|
|
35
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Example showing LangGraph agent with MCP tools integration and streaming capabilities using stdio transport.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
|
|
5
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from langchain_openai import ChatOpenAI
|
|
11
|
+
|
|
12
|
+
from aip_agents.agent import LangGraphAgent
|
|
13
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_stdio
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def main():
|
|
17
|
+
"""Demonstrates the LangGraphAgent with MCP tools via stdio transport and streaming."""
|
|
18
|
+
langgraph_agent = LangGraphAgent(
|
|
19
|
+
name="langgraph_mcp_stream_example",
|
|
20
|
+
instruction="""You are a helpful assistant that can provide weather forecasts.
|
|
21
|
+
For weather, specify the day in lowercase (e.g., 'monday').""",
|
|
22
|
+
model=ChatOpenAI(model="gpt-4.1", temperature=0),
|
|
23
|
+
tools=[],
|
|
24
|
+
)
|
|
25
|
+
langgraph_agent.add_mcp_server(mcp_config_stdio)
|
|
26
|
+
|
|
27
|
+
query = "What's the weather forecast for monday?" # Uses MCP weather tool
|
|
28
|
+
|
|
29
|
+
stream_thread_id = "langgraph_mcp_stream_example"
|
|
30
|
+
|
|
31
|
+
print(f"\nQuery: {query}")
|
|
32
|
+
print("Streaming response:")
|
|
33
|
+
|
|
34
|
+
full_response = ""
|
|
35
|
+
async for chunk in langgraph_agent.arun_stream(
|
|
36
|
+
query=query, configurable={"configurable": {"thread_id": stream_thread_id}}
|
|
37
|
+
):
|
|
38
|
+
if isinstance(chunk, str):
|
|
39
|
+
print(chunk, end="", flush=True)
|
|
40
|
+
full_response += chunk
|
|
41
|
+
elif isinstance(chunk, dict) and "messages" in chunk:
|
|
42
|
+
print("\n(Stream finished with final state object)")
|
|
43
|
+
elif isinstance(chunk, dict):
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
print(f"\nFull response collected: {full_response}")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
2
|
+
from aip_agents.examples.mcp_configs.configs import mcp_config_stdio as mcp_config_stdio
|
|
3
|
+
|
|
4
|
+
async def main() -> None:
|
|
5
|
+
"""Demonstrates the LangGraphAgent with MCP tools via stdio transport and streaming."""
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""Minimal LangGraph agent example demonstrating streaming capabilities."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
|
|
5
|
+
from langchain_openai import ChatOpenAI
|
|
6
|
+
|
|
7
|
+
from aip_agents.agent import LangGraphAgent
|
|
8
|
+
from aip_agents.examples.tools.langchain_arithmetic_tools import add_numbers
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async def langgraph_stream_example():
|
|
12
|
+
"""Demonstrates the LangGraphAgent's arun_stream method."""
|
|
13
|
+
model = ChatOpenAI(model="gpt-4.1", temperature=0)
|
|
14
|
+
tools = [add_numbers]
|
|
15
|
+
agent_name = "LangGraphArithmeticStreamAgent"
|
|
16
|
+
|
|
17
|
+
langgraph_agent = LangGraphAgent(
|
|
18
|
+
name=agent_name,
|
|
19
|
+
instruction="""You are a helpful assistant that can add two numbers using the add_numbers tool
|
|
20
|
+
and stream the results.""",
|
|
21
|
+
model=model,
|
|
22
|
+
tools=tools,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# Use the same query as in the non-streaming LangGraph example
|
|
26
|
+
query = "What is the sum of 23 and 47? And then add 10 to that, then add 5 more."
|
|
27
|
+
print(f"--- Agent: {agent_name} ---")
|
|
28
|
+
print(f"Query: {query}")
|
|
29
|
+
|
|
30
|
+
print("\nRunning arun_stream...")
|
|
31
|
+
stream_thread_id = "lgraph_arith_stream_example"
|
|
32
|
+
async for chunk in langgraph_agent.arun_stream(
|
|
33
|
+
query=query, configurable={"configurable": {"thread_id": stream_thread_id}}
|
|
34
|
+
):
|
|
35
|
+
if isinstance(chunk, str):
|
|
36
|
+
print(chunk, end="", flush=True) # AI message parts, print live
|
|
37
|
+
|
|
38
|
+
print("\n\n--- End of LangGraph Stream Example ---")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
# OPENAI_API_KEY should be set in the environment.
|
|
43
|
+
asyncio.run(langgraph_stream_example())
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Minimal LangChain agent example demonstrating streaming capabilities.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import asyncio
|
|
8
|
+
|
|
9
|
+
import dotenv
|
|
10
|
+
|
|
11
|
+
from aip_agents.agent import LangChainAgent
|
|
12
|
+
from aip_agents.examples.tools.langchain_arithmetic_tools import add_numbers
|
|
13
|
+
|
|
14
|
+
dotenv.load_dotenv(override=True)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
async def main():
|
|
18
|
+
"""Demonstrates the LangChainAgent's arun_stream method with async execution."""
|
|
19
|
+
agent = LangChainAgent(
|
|
20
|
+
name="LangChainStreamingCalculator",
|
|
21
|
+
instruction="You are a helpful calculator assistant that can add numbers. "
|
|
22
|
+
"When asked to add numbers, use the add_numbers tool. "
|
|
23
|
+
"Explain your steps clearly for streaming demonstration.",
|
|
24
|
+
model="openai/gpt-4.1",
|
|
25
|
+
tools=[add_numbers],
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Stream the response chunks
|
|
29
|
+
async for chunk in agent.arun_stream(
|
|
30
|
+
query="What is the sum of 23 and 47? And then add 10 to that, then add 5 more."
|
|
31
|
+
):
|
|
32
|
+
if isinstance(chunk, str):
|
|
33
|
+
print(chunk, end="", flush=True)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if __name__ == "__main__":
|
|
37
|
+
asyncio.run(main())
|