From c3a0874829c1507d7ee7d44227013da29383659c Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Sun, 7 Sep 2025 23:26:45 -0700 Subject: [PATCH] add more --- arch/tools/cli/config_generator.py | 206 +++++++++++++------------- demos/use_cases/rag_agent/cookies.txt | 1 - demos/use_cases/rag_agent/test.rest | 2 +- 3 files changed, 106 insertions(+), 103 deletions(-) diff --git a/arch/tools/cli/config_generator.py b/arch/tools/cli/config_generator.py index ffab4a11..c2017d65 100644 --- a/arch/tools/cli/config_generator.py +++ b/arch/tools/cli/config_generator.py @@ -98,122 +98,126 @@ def validate_and_render_schema(): llms_with_usage = [] model_name_keys = set() model_usage_name_keys = set() - + llm_gateway_listener = config_yaml.get("listeners", {}).get("egress_traffic", {}) if llm_gateway_listener.get("port") == None: llm_gateway_listener["port"] = 12000 - + if llm_gateway_listener and config_yaml["llm_providers_v2"]: - raise Exception("Please provide either egress_traffic or llm_providers_v2, not both") + raise Exception( + "Please provide either egress_traffic or llm_providers_v2, not both" + ) if config_yaml["llm_providers"]: - if config_yaml["llm_providers_v2"] is not None: - raise Exception("Please provide either llm_providers or llm_providers_v2, not both") - config_yaml["llm_providers_v2"] = { - "default": { - "listener": { - "port": llm_gateway_listener["port"], - "protocol": llm_gateway_listener.get("message_format", "openai") - }, - "providers": config_yaml["llm_providers"] + if config_yaml["llm_providers_v2"] is not None: + raise Exception( + "Please provide either llm_providers or llm_providers_v2, not both" + ) + config_yaml["llm_providers_v2"] = { + "default": { + "listener": { + "port": llm_gateway_listener["port"], + "protocol": llm_gateway_listener.get("message_format", "openai"), + }, + "providers": config_yaml["llm_providers"], + } } - } for llm_provider_name, provider_def in config_yaml["llm_providers_v2"].items(): - provider_listener = provider_def["listener"] - - for llm_provider in provider_def["providers"]: - if llm_provider.get("usage", None): - llms_with_usage.append(llm_provider["name"]) - if llm_provider.get("name") in llm_provider_name_set: - raise Exception( - f"Duplicate llm_provider name {llm_provider.get('name')}, please provide unique name for each llm_provider" - ) + provider_listener = provider_def["listener"] - model_name = llm_provider.get("model") - if model_name in model_name_keys: - raise Exception( - f"Duplicate model name {model_name}, please provide unique model name for each llm_provider" - ) - model_name_keys.add(model_name) - if llm_provider.get("name") is None: - llm_provider["name"] = model_name + for llm_provider in provider_def["providers"]: + if llm_provider.get("usage", None): + llms_with_usage.append(llm_provider["name"]) + if llm_provider.get("name") in llm_provider_name_set: + raise Exception( + f"Duplicate llm_provider name {llm_provider.get('name')}, please provide unique name for each llm_provider" + ) - model_name_tokens = model_name.split("/") - if len(model_name_tokens) < 2: - raise Exception( - f"Invalid model name {model_name}. Please provide model name in the format /." - ) - provider = model_name_tokens[0] - model_id = "/".join(model_name_tokens[1:]) - if provider not in SUPPORTED_PROVIDERS: - if ( - llm_provider.get("base_url", None) is None - or llm_provider.get("provider_interface", None) is None - ): - raise Exception( - f"Must provide base_url and provider_interface for unsupported provider {provider} for model {model_name}. Supported providers are: {', '.join(SUPPORTED_PROVIDERS)}" - ) - provider = llm_provider.get("provider_interface", None) - elif llm_provider.get("provider_interface", None) is not None: - raise Exception( - f"Please provide provider interface as part of model name {model_name} using the format /. For example, use 'openai/gpt-3.5-turbo' instead of 'gpt-3.5-turbo' " - ) + model_name = llm_provider.get("model") + if model_name in model_name_keys: + raise Exception( + f"Duplicate model name {model_name}, please provide unique model name for each llm_provider" + ) + model_name_keys.add(model_name) + if llm_provider.get("name") is None: + llm_provider["name"] = model_name - if model_id in model_name_keys: - raise Exception( - f"Duplicate model_id {model_id}, please provide unique model_id for each llm_provider" - ) - model_name_keys.add(model_id) + model_name_tokens = model_name.split("/") + if len(model_name_tokens) < 2: + raise Exception( + f"Invalid model name {model_name}. Please provide model name in the format /." + ) + provider = model_name_tokens[0] + model_id = "/".join(model_name_tokens[1:]) + if provider not in SUPPORTED_PROVIDERS: + if ( + llm_provider.get("base_url", None) is None + or llm_provider.get("provider_interface", None) is None + ): + raise Exception( + f"Must provide base_url and provider_interface for unsupported provider {provider} for model {model_name}. Supported providers are: {', '.join(SUPPORTED_PROVIDERS)}" + ) + provider = llm_provider.get("provider_interface", None) + elif llm_provider.get("provider_interface", None) is not None: + raise Exception( + f"Please provide provider interface as part of model name {model_name} using the format /. For example, use 'openai/gpt-3.5-turbo' instead of 'gpt-3.5-turbo' " + ) - for routing_preference in llm_provider.get("routing_preferences", []): - if routing_preference.get("name") in model_usage_name_keys: - raise Exception( - f"Duplicate routing preference name \"{routing_preference.get('name')}\", please provide unique name for each routing preference" - ) - model_usage_name_keys.add(routing_preference.get("name")) + if model_id in model_name_keys: + raise Exception( + f"Duplicate model_id {model_id}, please provide unique model_id for each llm_provider" + ) + model_name_keys.add(model_id) - llm_provider["model"] = model_id - llm_provider["provider_interface"] = provider - llm_provider_name_set.add(llm_provider.get("name")) - provider = None - if llm_provider.get("provider") and llm_provider.get("provider_interface"): - raise Exception( - "Please provide either provider or provider_interface, not both" - ) - if llm_provider.get("provider"): - provider = llm_provider["provider"] - llm_provider["provider_interface"] = provider - del llm_provider["provider"] - updated_llm_providers.append(llm_provider) + for routing_preference in llm_provider.get("routing_preferences", []): + if routing_preference.get("name") in model_usage_name_keys: + raise Exception( + f"Duplicate routing preference name \"{routing_preference.get('name')}\", please provide unique name for each routing preference" + ) + model_usage_name_keys.add(routing_preference.get("name")) - if llm_provider.get("base_url", None): - base_url = llm_provider["base_url"] - urlparse_result = urlparse(base_url) - url_path = urlparse_result.path - if url_path and url_path != "/": - raise Exception( - f"Please provide base_url without path, got {base_url}. Use base_url like 'http://example.com' instead of 'http://example.com/path'." - ) - if urlparse_result.scheme == "" or urlparse_result.scheme not in [ - "http", - "https", - ]: - raise Exception( - "Please provide a valid URL with scheme (http/https) in base_url" - ) - protocol = urlparse_result.scheme - port = urlparse_result.port - if port is None: - if protocol == "http": - port = 80 - else: - port = 443 - endpoint = urlparse_result.hostname - llm_provider["endpoint"] = endpoint - llm_provider["port"] = port - llm_provider["protocol"] = protocol - llms_with_endpoint.append(llm_provider) + llm_provider["model"] = model_id + llm_provider["provider_interface"] = provider + llm_provider_name_set.add(llm_provider.get("name")) + provider = None + if llm_provider.get("provider") and llm_provider.get("provider_interface"): + raise Exception( + "Please provide either provider or provider_interface, not both" + ) + if llm_provider.get("provider"): + provider = llm_provider["provider"] + llm_provider["provider_interface"] = provider + del llm_provider["provider"] + updated_llm_providers.append(llm_provider) + + if llm_provider.get("base_url", None): + base_url = llm_provider["base_url"] + urlparse_result = urlparse(base_url) + url_path = urlparse_result.path + if url_path and url_path != "/": + raise Exception( + f"Please provide base_url without path, got {base_url}. Use base_url like 'http://example.com' instead of 'http://example.com/path'." + ) + if urlparse_result.scheme == "" or urlparse_result.scheme not in [ + "http", + "https", + ]: + raise Exception( + "Please provide a valid URL with scheme (http/https) in base_url" + ) + protocol = urlparse_result.scheme + port = urlparse_result.port + if port is None: + if protocol == "http": + port = 80 + else: + port = 443 + endpoint = urlparse_result.hostname + llm_provider["endpoint"] = endpoint + llm_provider["port"] = port + llm_provider["protocol"] = protocol + llms_with_endpoint.append(llm_provider) if len(model_usage_name_keys) > 0: routing_llm_provider = config_yaml.get("routing", {}).get("llm_provider", None) diff --git a/demos/use_cases/rag_agent/cookies.txt b/demos/use_cases/rag_agent/cookies.txt index c31d9899..1f4251a9 100644 --- a/demos/use_cases/rag_agent/cookies.txt +++ b/demos/use_cases/rag_agent/cookies.txt @@ -1,4 +1,3 @@ # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. - diff --git a/demos/use_cases/rag_agent/test.rest b/demos/use_cases/rag_agent/test.rest index 92b7206e..64a33964 100644 --- a/demos/use_cases/rag_agent/test.rest +++ b/demos/use_cases/rag_agent/test.rest @@ -28,4 +28,4 @@ mcp-session-id: af2e2dace64c48f99ac3536faeaa3c68 "id": 2, "method": "tools/list", "params": {} -} \ No newline at end of file +}