nvidia-nat 1.2.1rc1__py3-none-any.whl → 1.3.0__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.
- aiq/__init__.py +2 -2
- nat/agent/base.py +27 -18
- nat/agent/dual_node.py +9 -4
- nat/agent/prompt_optimizer/prompt.py +68 -0
- nat/agent/prompt_optimizer/register.py +149 -0
- nat/agent/react_agent/agent.py +81 -50
- nat/agent/react_agent/register.py +59 -40
- nat/agent/reasoning_agent/reasoning_agent.py +17 -15
- nat/agent/register.py +1 -1
- nat/agent/rewoo_agent/agent.py +327 -149
- nat/agent/rewoo_agent/prompt.py +19 -22
- nat/agent/rewoo_agent/register.py +64 -46
- nat/agent/tool_calling_agent/agent.py +152 -29
- nat/agent/tool_calling_agent/register.py +61 -38
- nat/authentication/api_key/api_key_auth_provider.py +2 -2
- nat/authentication/credential_validator/bearer_token_validator.py +557 -0
- nat/authentication/http_basic_auth/http_basic_auth_provider.py +1 -1
- nat/authentication/interfaces.py +5 -2
- nat/authentication/oauth2/oauth2_auth_code_flow_provider.py +69 -36
- nat/authentication/oauth2/oauth2_resource_server_config.py +124 -0
- nat/authentication/register.py +0 -1
- nat/builder/builder.py +56 -24
- nat/builder/component_utils.py +10 -6
- nat/builder/context.py +70 -18
- nat/builder/eval_builder.py +16 -11
- nat/builder/framework_enum.py +1 -0
- nat/builder/front_end.py +1 -1
- nat/builder/function.py +378 -8
- nat/builder/function_base.py +3 -3
- nat/builder/function_info.py +6 -8
- nat/builder/intermediate_step_manager.py +6 -2
- nat/builder/user_interaction_manager.py +2 -2
- nat/builder/workflow.py +13 -1
- nat/builder/workflow_builder.py +327 -79
- nat/cli/cli_utils/config_override.py +2 -2
- nat/cli/commands/evaluate.py +1 -1
- nat/cli/commands/info/info.py +16 -6
- nat/cli/commands/info/list_channels.py +1 -1
- nat/cli/commands/info/list_components.py +7 -8
- nat/cli/commands/mcp/__init__.py +14 -0
- nat/cli/commands/mcp/mcp.py +986 -0
- nat/cli/commands/object_store/__init__.py +14 -0
- nat/cli/commands/object_store/object_store.py +227 -0
- nat/cli/commands/optimize.py +90 -0
- nat/cli/commands/registry/publish.py +2 -2
- nat/cli/commands/registry/pull.py +2 -2
- nat/cli/commands/registry/remove.py +2 -2
- nat/cli/commands/registry/search.py +15 -17
- nat/cli/commands/start.py +16 -5
- nat/cli/commands/uninstall.py +1 -1
- nat/cli/commands/workflow/templates/config.yml.j2 +14 -13
- nat/cli/commands/workflow/templates/pyproject.toml.j2 +5 -2
- nat/cli/commands/workflow/templates/register.py.j2 +2 -3
- nat/cli/commands/workflow/templates/workflow.py.j2 +35 -21
- nat/cli/commands/workflow/workflow_commands.py +105 -19
- nat/cli/entrypoint.py +17 -11
- nat/cli/main.py +3 -0
- nat/cli/register_workflow.py +38 -4
- nat/cli/type_registry.py +79 -10
- nat/control_flow/__init__.py +0 -0
- nat/control_flow/register.py +20 -0
- nat/control_flow/router_agent/__init__.py +0 -0
- nat/control_flow/router_agent/agent.py +329 -0
- nat/control_flow/router_agent/prompt.py +48 -0
- nat/control_flow/router_agent/register.py +91 -0
- nat/control_flow/sequential_executor.py +166 -0
- nat/data_models/agent.py +34 -0
- nat/data_models/api_server.py +196 -67
- nat/data_models/authentication.py +23 -9
- nat/data_models/common.py +1 -1
- nat/data_models/component.py +2 -0
- nat/data_models/component_ref.py +11 -0
- nat/data_models/config.py +42 -18
- nat/data_models/dataset_handler.py +1 -1
- nat/data_models/discovery_metadata.py +4 -4
- nat/data_models/evaluate.py +4 -1
- nat/data_models/function.py +34 -0
- nat/data_models/function_dependencies.py +14 -6
- nat/data_models/gated_field_mixin.py +242 -0
- nat/data_models/intermediate_step.py +3 -3
- nat/data_models/optimizable.py +119 -0
- nat/data_models/optimizer.py +149 -0
- nat/data_models/span.py +41 -3
- nat/data_models/swe_bench_model.py +1 -1
- nat/data_models/temperature_mixin.py +44 -0
- nat/data_models/thinking_mixin.py +86 -0
- nat/data_models/top_p_mixin.py +44 -0
- nat/embedder/azure_openai_embedder.py +46 -0
- nat/embedder/nim_embedder.py +1 -1
- nat/embedder/openai_embedder.py +2 -3
- nat/embedder/register.py +1 -1
- nat/eval/config.py +3 -1
- nat/eval/dataset_handler/dataset_handler.py +71 -7
- nat/eval/evaluate.py +86 -31
- nat/eval/evaluator/base_evaluator.py +1 -1
- nat/eval/evaluator/evaluator_model.py +13 -0
- nat/eval/intermediate_step_adapter.py +1 -1
- nat/eval/rag_evaluator/evaluate.py +9 -6
- nat/eval/rag_evaluator/register.py +3 -3
- nat/eval/register.py +4 -1
- nat/eval/remote_workflow.py +3 -3
- nat/eval/runtime_evaluator/__init__.py +14 -0
- nat/eval/runtime_evaluator/evaluate.py +123 -0
- nat/eval/runtime_evaluator/register.py +100 -0
- nat/eval/swe_bench_evaluator/evaluate.py +6 -6
- nat/eval/trajectory_evaluator/evaluate.py +1 -1
- nat/eval/trajectory_evaluator/register.py +1 -1
- nat/eval/tunable_rag_evaluator/evaluate.py +4 -7
- nat/eval/utils/eval_trace_ctx.py +89 -0
- nat/eval/utils/weave_eval.py +18 -9
- nat/experimental/decorators/experimental_warning_decorator.py +27 -7
- nat/experimental/test_time_compute/functions/execute_score_select_function.py +1 -1
- nat/experimental/test_time_compute/functions/plan_select_execute_function.py +7 -3
- nat/experimental/test_time_compute/functions/ttc_tool_orchestration_function.py +3 -3
- nat/experimental/test_time_compute/functions/ttc_tool_wrapper_function.py +3 -3
- nat/experimental/test_time_compute/models/strategy_base.py +5 -4
- nat/experimental/test_time_compute/register.py +0 -1
- nat/experimental/test_time_compute/selection/llm_based_output_merging_selector.py +1 -3
- nat/front_ends/console/authentication_flow_handler.py +82 -30
- nat/front_ends/console/console_front_end_plugin.py +19 -7
- nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py +1 -1
- nat/front_ends/fastapi/auth_flow_handlers/websocket_flow_handler.py +52 -17
- nat/front_ends/fastapi/dask_client_mixin.py +65 -0
- nat/front_ends/fastapi/fastapi_front_end_config.py +36 -5
- nat/front_ends/fastapi/fastapi_front_end_controller.py +4 -4
- nat/front_ends/fastapi/fastapi_front_end_plugin.py +135 -4
- nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py +455 -282
- nat/front_ends/fastapi/job_store.py +518 -99
- nat/front_ends/fastapi/main.py +11 -19
- nat/front_ends/fastapi/message_handler.py +74 -50
- nat/front_ends/fastapi/message_validator.py +20 -21
- nat/front_ends/fastapi/response_helpers.py +4 -4
- nat/front_ends/fastapi/step_adaptor.py +2 -2
- nat/front_ends/fastapi/utils.py +57 -0
- nat/front_ends/mcp/introspection_token_verifier.py +73 -0
- nat/front_ends/mcp/mcp_front_end_config.py +47 -3
- nat/front_ends/mcp/mcp_front_end_plugin.py +48 -13
- nat/front_ends/mcp/mcp_front_end_plugin_worker.py +120 -8
- nat/front_ends/mcp/tool_converter.py +44 -14
- nat/front_ends/register.py +0 -1
- nat/front_ends/simple_base/simple_front_end_plugin_base.py +3 -1
- nat/llm/aws_bedrock_llm.py +24 -12
- nat/llm/azure_openai_llm.py +57 -0
- nat/llm/litellm_llm.py +69 -0
- nat/llm/nim_llm.py +20 -8
- nat/llm/openai_llm.py +14 -6
- nat/llm/register.py +5 -1
- nat/llm/utils/env_config_value.py +2 -3
- nat/llm/utils/thinking.py +215 -0
- nat/meta/pypi.md +9 -9
- nat/object_store/register.py +0 -1
- nat/observability/exporter/base_exporter.py +3 -3
- nat/observability/exporter/file_exporter.py +1 -1
- nat/observability/exporter/processing_exporter.py +309 -81
- nat/observability/exporter/span_exporter.py +35 -15
- nat/observability/exporter_manager.py +7 -7
- nat/observability/mixin/file_mixin.py +7 -7
- nat/observability/mixin/redaction_config_mixin.py +42 -0
- nat/observability/mixin/tagging_config_mixin.py +62 -0
- nat/observability/mixin/type_introspection_mixin.py +420 -107
- nat/observability/processor/batching_processor.py +5 -7
- nat/observability/processor/falsy_batch_filter_processor.py +55 -0
- nat/observability/processor/processor.py +3 -0
- nat/observability/processor/processor_factory.py +70 -0
- nat/observability/processor/redaction/__init__.py +24 -0
- nat/observability/processor/redaction/contextual_redaction_processor.py +125 -0
- nat/observability/processor/redaction/contextual_span_redaction_processor.py +66 -0
- nat/observability/processor/redaction/redaction_processor.py +177 -0
- nat/observability/processor/redaction/span_header_redaction_processor.py +92 -0
- nat/observability/processor/span_tagging_processor.py +68 -0
- nat/observability/register.py +22 -4
- nat/profiler/calc/calc_runner.py +3 -4
- nat/profiler/callbacks/agno_callback_handler.py +1 -1
- nat/profiler/callbacks/langchain_callback_handler.py +14 -7
- nat/profiler/callbacks/llama_index_callback_handler.py +3 -3
- nat/profiler/callbacks/semantic_kernel_callback_handler.py +3 -3
- nat/profiler/data_frame_row.py +1 -1
- nat/profiler/decorators/framework_wrapper.py +62 -13
- nat/profiler/decorators/function_tracking.py +160 -3
- nat/profiler/forecasting/models/forecasting_base_model.py +3 -1
- nat/profiler/forecasting/models/linear_model.py +1 -1
- nat/profiler/forecasting/models/random_forest_regressor.py +1 -1
- nat/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +1 -1
- nat/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +1 -1
- nat/profiler/inference_optimization/data_models.py +3 -3
- nat/profiler/inference_optimization/experimental/prefix_span_analysis.py +8 -9
- nat/profiler/inference_optimization/token_uniqueness.py +1 -1
- nat/profiler/parameter_optimization/__init__.py +0 -0
- nat/profiler/parameter_optimization/optimizable_utils.py +93 -0
- nat/profiler/parameter_optimization/optimizer_runtime.py +67 -0
- nat/profiler/parameter_optimization/parameter_optimizer.py +164 -0
- nat/profiler/parameter_optimization/parameter_selection.py +107 -0
- nat/profiler/parameter_optimization/pareto_visualizer.py +395 -0
- nat/profiler/parameter_optimization/prompt_optimizer.py +384 -0
- nat/profiler/parameter_optimization/update_helpers.py +66 -0
- nat/profiler/profile_runner.py +14 -9
- nat/profiler/utils.py +4 -2
- nat/registry_handlers/local/local_handler.py +2 -2
- nat/registry_handlers/package_utils.py +1 -2
- nat/registry_handlers/pypi/pypi_handler.py +23 -26
- nat/registry_handlers/register.py +3 -4
- nat/registry_handlers/rest/rest_handler.py +12 -13
- nat/retriever/milvus/retriever.py +2 -2
- nat/retriever/nemo_retriever/retriever.py +1 -1
- nat/retriever/register.py +0 -1
- nat/runtime/loader.py +2 -2
- nat/runtime/runner.py +105 -8
- nat/runtime/session.py +69 -8
- nat/settings/global_settings.py +16 -5
- nat/tool/chat_completion.py +5 -2
- nat/tool/code_execution/local_sandbox/local_sandbox_server.py +3 -3
- nat/tool/datetime_tools.py +49 -9
- nat/tool/document_search.py +2 -2
- nat/tool/github_tools.py +450 -0
- nat/tool/memory_tools/add_memory_tool.py +3 -3
- nat/tool/memory_tools/delete_memory_tool.py +3 -4
- nat/tool/memory_tools/get_memory_tool.py +4 -4
- nat/tool/nvidia_rag.py +1 -1
- nat/tool/register.py +2 -9
- nat/tool/retriever.py +3 -2
- nat/utils/callable_utils.py +70 -0
- nat/utils/data_models/schema_validator.py +3 -3
- nat/utils/decorators.py +210 -0
- nat/utils/exception_handlers/automatic_retries.py +104 -51
- nat/utils/exception_handlers/schemas.py +1 -1
- nat/utils/io/yaml_tools.py +2 -2
- nat/utils/log_levels.py +25 -0
- nat/utils/reactive/base/observable_base.py +2 -2
- nat/utils/reactive/base/observer_base.py +1 -1
- nat/utils/reactive/observable.py +2 -2
- nat/utils/reactive/observer.py +4 -4
- nat/utils/reactive/subscription.py +1 -1
- nat/utils/settings/global_settings.py +6 -8
- nat/utils/type_converter.py +12 -3
- nat/utils/type_utils.py +9 -5
- nvidia_nat-1.3.0.dist-info/METADATA +195 -0
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/RECORD +244 -200
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/entry_points.txt +1 -0
- nat/cli/commands/info/list_mcp.py +0 -304
- nat/tool/github_tools/create_github_commit.py +0 -133
- nat/tool/github_tools/create_github_issue.py +0 -87
- nat/tool/github_tools/create_github_pr.py +0 -106
- nat/tool/github_tools/get_github_file.py +0 -106
- nat/tool/github_tools/get_github_issue.py +0 -166
- nat/tool/github_tools/get_github_pr.py +0 -256
- nat/tool/github_tools/update_github_issue.py +0 -100
- nat/tool/mcp/exceptions.py +0 -142
- nat/tool/mcp/mcp_client.py +0 -255
- nat/tool/mcp/mcp_tool.py +0 -96
- nat/utils/exception_handlers/mcp.py +0 -211
- nvidia_nat-1.2.1rc1.dist-info/METADATA +0 -365
- /nat/{tool/github_tools → agent/prompt_optimizer}/__init__.py +0 -0
- /nat/{tool/mcp → authentication/credential_validator}/__init__.py +0 -0
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/WHEEL +0 -0
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/licenses/LICENSE.md +0 -0
- {nvidia_nat-1.2.1rc1.dist-info → nvidia_nat-1.3.0.dist-info}/top_level.txt +0 -0
|
@@ -21,66 +21,91 @@ from nat.builder.builder import Builder
|
|
|
21
21
|
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
22
22
|
from nat.builder.function_info import FunctionInfo
|
|
23
23
|
from nat.cli.register_workflow import register_function
|
|
24
|
+
from nat.data_models.agent import AgentBaseConfig
|
|
25
|
+
from nat.data_models.api_server import ChatRequest
|
|
26
|
+
from nat.data_models.api_server import ChatRequestOrMessage
|
|
27
|
+
from nat.data_models.component_ref import FunctionGroupRef
|
|
24
28
|
from nat.data_models.component_ref import FunctionRef
|
|
25
|
-
from nat.
|
|
26
|
-
from nat.data_models.function import FunctionBaseConfig
|
|
29
|
+
from nat.utils.type_converter import GlobalTypeConverter
|
|
27
30
|
|
|
28
31
|
logger = logging.getLogger(__name__)
|
|
29
32
|
|
|
30
33
|
|
|
31
|
-
class ToolCallAgentWorkflowConfig(
|
|
34
|
+
class ToolCallAgentWorkflowConfig(AgentBaseConfig, name="tool_calling_agent"):
|
|
32
35
|
"""
|
|
33
36
|
A Tool Calling Agent requires an LLM which supports tool calling. A tool Calling Agent utilizes the tool
|
|
34
37
|
input parameters to select the optimal tool. Supports handling tool errors.
|
|
35
38
|
"""
|
|
36
|
-
|
|
37
|
-
tool_names: list[FunctionRef] = Field(default_factory=list,
|
|
38
|
-
description="The list of tools to provide to the tool calling agent.")
|
|
39
|
-
llm_name: LLMRef = Field(description="The LLM model to use with the tool calling agent.")
|
|
40
|
-
verbose: bool = Field(default=False, description="Set the verbosity of the tool calling agent's logging.")
|
|
41
|
-
handle_tool_errors: bool = Field(default=True, description="Specify ability to handle tool calling errors.")
|
|
42
39
|
description: str = Field(default="Tool Calling Agent Workflow", description="Description of this functions use.")
|
|
40
|
+
tool_names: list[FunctionRef | FunctionGroupRef] = Field(
|
|
41
|
+
default_factory=list, description="The list of tools to provide to the tool calling agent.")
|
|
42
|
+
handle_tool_errors: bool = Field(default=True, description="Specify ability to handle tool calling errors.")
|
|
43
43
|
max_iterations: int = Field(default=15, description="Number of tool calls before stoping the tool calling agent.")
|
|
44
|
+
max_history: int = Field(default=15, description="Maximum number of messages to keep in the conversation history.")
|
|
45
|
+
|
|
46
|
+
system_prompt: str | None = Field(default=None, description="Provides the system prompt to use with the agent.")
|
|
47
|
+
additional_instructions: str | None = Field(default=None,
|
|
48
|
+
description="Additional instructions appended to the system prompt.")
|
|
49
|
+
return_direct: list[FunctionRef] | None = Field(
|
|
50
|
+
default=None, description="List of tool names that should return responses directly without LLM processing.")
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
@register_function(config_type=ToolCallAgentWorkflowConfig, framework_wrappers=[LLMFrameworkEnum.LANGCHAIN])
|
|
47
54
|
async def tool_calling_agent_workflow(config: ToolCallAgentWorkflowConfig, builder: Builder):
|
|
48
|
-
from langchain_core.messages
|
|
49
|
-
from
|
|
55
|
+
from langchain_core.messages import trim_messages
|
|
56
|
+
from langchain_core.messages.base import BaseMessage
|
|
57
|
+
from langgraph.graph.state import CompiledStateGraph
|
|
50
58
|
|
|
51
59
|
from nat.agent.base import AGENT_LOG_PREFIX
|
|
60
|
+
from nat.agent.tool_calling_agent.agent import ToolCallAgentGraph
|
|
61
|
+
from nat.agent.tool_calling_agent.agent import ToolCallAgentGraphState
|
|
62
|
+
from nat.agent.tool_calling_agent.agent import create_tool_calling_agent_prompt
|
|
52
63
|
|
|
53
|
-
|
|
54
|
-
from .agent import ToolCallAgentGraphState
|
|
55
|
-
|
|
64
|
+
prompt = create_tool_calling_agent_prompt(config)
|
|
56
65
|
# we can choose an LLM for the ReAct agent in the config file
|
|
57
66
|
llm = await builder.get_llm(config.llm_name, wrapper_type=LLMFrameworkEnum.LANGCHAIN)
|
|
58
67
|
# the agent can run any installed tool, simply install the tool and add it to the config file
|
|
59
68
|
# the sample tools provided can easily be copied or changed
|
|
60
|
-
tools = builder.get_tools(tool_names=config.tool_names, wrapper_type=LLMFrameworkEnum.LANGCHAIN)
|
|
69
|
+
tools = await builder.get_tools(tool_names=config.tool_names, wrapper_type=LLMFrameworkEnum.LANGCHAIN)
|
|
61
70
|
if not tools:
|
|
62
71
|
raise ValueError(f"No tools specified for Tool Calling Agent '{config.llm_name}'")
|
|
63
72
|
|
|
64
|
-
#
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# in tool calling agents, we bind the tools to the LLM, to pass the tools' input schemas at runtime
|
|
68
|
-
llm = llm.bind_tools(tools)
|
|
69
|
-
except NotImplementedError as ex:
|
|
70
|
-
logger.error("%s Failed to bind tools: %s", AGENT_LOG_PREFIX, ex, exc_info=True)
|
|
71
|
-
raise ex
|
|
73
|
+
# convert return_direct FunctionRef objects to BaseTool objects
|
|
74
|
+
return_direct_tools = await builder.get_tools(
|
|
75
|
+
tool_names=config.return_direct, wrapper_type=LLMFrameworkEnum.LANGCHAIN) if config.return_direct else None
|
|
72
76
|
|
|
73
77
|
# construct the Tool Calling Agent Graph from the configured llm, and tools
|
|
74
|
-
graph:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
graph: CompiledStateGraph = await ToolCallAgentGraph(llm=llm,
|
|
79
|
+
tools=tools,
|
|
80
|
+
prompt=prompt,
|
|
81
|
+
detailed_logs=config.verbose,
|
|
82
|
+
log_response_max_chars=config.log_response_max_chars,
|
|
83
|
+
handle_tool_errors=config.handle_tool_errors,
|
|
84
|
+
return_direct=return_direct_tools).build_graph()
|
|
85
|
+
|
|
86
|
+
async def _response_fn(chat_request_or_message: ChatRequestOrMessage) -> str:
|
|
87
|
+
"""
|
|
88
|
+
Main workflow entry function for the Tool Calling Agent.
|
|
89
|
+
|
|
90
|
+
This function invokes the Tool Calling Agent Graph and returns the response.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
chat_request_or_message (ChatRequestOrMessage): The input message to process
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
str: The response from the agent or error message
|
|
97
|
+
"""
|
|
80
98
|
try:
|
|
99
|
+
message = GlobalTypeConverter.get().convert(chat_request_or_message, to_type=ChatRequest)
|
|
100
|
+
|
|
81
101
|
# initialize the starting state with the user query
|
|
82
|
-
|
|
83
|
-
|
|
102
|
+
messages: list[BaseMessage] = trim_messages(messages=[m.model_dump() for m in message.messages],
|
|
103
|
+
max_tokens=config.max_history,
|
|
104
|
+
strategy="last",
|
|
105
|
+
token_counter=len,
|
|
106
|
+
start_on="human",
|
|
107
|
+
include_system=True)
|
|
108
|
+
state = ToolCallAgentGraphState(messages=messages)
|
|
84
109
|
|
|
85
110
|
# run the Tool Calling Agent Graph
|
|
86
111
|
state = await graph.ainvoke(state, config={'recursion_limit': (config.max_iterations + 1) * 2})
|
|
@@ -90,17 +115,15 @@ async def tool_calling_agent_workflow(config: ToolCallAgentWorkflowConfig, build
|
|
|
90
115
|
|
|
91
116
|
# get and return the output from the state
|
|
92
117
|
state = ToolCallAgentGraphState(**state)
|
|
93
|
-
output_message = state.messages[-1]
|
|
94
|
-
return output_message.content
|
|
118
|
+
output_message = state.messages[-1]
|
|
119
|
+
return str(output_message.content)
|
|
95
120
|
except Exception as ex:
|
|
96
|
-
logger.
|
|
97
|
-
|
|
98
|
-
return str(ex)
|
|
99
|
-
return "I seem to be having a problem."
|
|
121
|
+
logger.error("%s Tool Calling Agent failed with exception: %s", AGENT_LOG_PREFIX, ex)
|
|
122
|
+
raise
|
|
100
123
|
|
|
101
124
|
try:
|
|
102
125
|
yield FunctionInfo.from_fn(_response_fn, description=config.description)
|
|
103
126
|
except GeneratorExit:
|
|
104
|
-
logger.exception("%s Workflow exited early!", AGENT_LOG_PREFIX
|
|
127
|
+
logger.exception("%s Workflow exited early!", AGENT_LOG_PREFIX)
|
|
105
128
|
finally:
|
|
106
129
|
logger.debug("%s Cleaning up react_agent workflow.", AGENT_LOG_PREFIX)
|
|
@@ -31,7 +31,7 @@ class APIKeyAuthProvider(AuthProviderBase[APIKeyAuthProviderConfig]):
|
|
|
31
31
|
# fmt: off
|
|
32
32
|
def __init__(self,
|
|
33
33
|
config: APIKeyAuthProviderConfig,
|
|
34
|
-
config_name: str | None = None) -> None:
|
|
34
|
+
config_name: str | None = None) -> None:
|
|
35
35
|
assert isinstance(config, APIKeyAuthProviderConfig), ("Config is not APIKeyAuthProviderConfig")
|
|
36
36
|
super().__init__(config)
|
|
37
37
|
# fmt: on
|
|
@@ -80,7 +80,7 @@ class APIKeyAuthProvider(AuthProviderBase[APIKeyAuthProviderConfig]):
|
|
|
80
80
|
|
|
81
81
|
raise ValueError(f"Unsupported header auth scheme: {header_auth_scheme}")
|
|
82
82
|
|
|
83
|
-
async def authenticate(self, user_id: str | None = None) -> AuthResult | None:
|
|
83
|
+
async def authenticate(self, user_id: str | None = None, **kwargs) -> AuthResult | None:
|
|
84
84
|
"""
|
|
85
85
|
Authenticate the user using the API key credentials.
|
|
86
86
|
|