From 823303240c82ba0dddfbe376904758b230ebd0a2 Mon Sep 17 00:00:00 2001 From: Thibault Jaigu Date: Mon, 6 Jul 2026 08:58:14 +0100 Subject: [PATCH 1/2] Add Requesty provider to the CLI --- src/Cli/src/Helpers.cs | 3 +++ src/Cli/src/Models/Provider.cs | 1 + 2 files changed, 4 insertions(+) diff --git a/src/Cli/src/Helpers.cs b/src/Cli/src/Helpers.cs index 78ab506f..b0f68b31 100644 --- a/src/Cli/src/Helpers.cs +++ b/src/Cli/src/Helpers.cs @@ -57,6 +57,7 @@ public static IChatClient GetChatModel( Uri? endpoint = provider switch { Provider.Free or Provider.OpenRouter => new Uri(tryAGI.OpenAI.CustomProviders.OpenRouterBaseUrl), + Provider.Requesty => new Uri("https://router.requesty.ai/v1"), _ => null, }; model = model switch @@ -74,6 +75,8 @@ public static IChatClient GetChatModel( throw new InvalidOperationException("OPENAI_API_KEY environment variable is not set."), Provider.OpenRouter or Provider.Free => Environment.GetEnvironmentVariable("OPENROUTER_API_KEY") ?? throw new InvalidOperationException("OPENROUTER_API_KEY environment variable is not set."), + Provider.Requesty => Environment.GetEnvironmentVariable("REQUESTY_API_KEY") ?? + throw new InvalidOperationException("REQUESTY_API_KEY environment variable is not set."), _ => throw new NotImplementedException(), }; diff --git a/src/Cli/src/Models/Provider.cs b/src/Cli/src/Models/Provider.cs index b669aaae..ee560002 100644 --- a/src/Cli/src/Models/Provider.cs +++ b/src/Cli/src/Models/Provider.cs @@ -4,6 +4,7 @@ internal enum Provider { OpenAi, OpenRouter, + Requesty, Anthropic, Free, } \ No newline at end of file From b1d6e48e8a41eb8532f5a2c56b6eedb148907bf6 Mon Sep 17 00:00:00 2001 From: "Konstantin S." Date: Sun, 30 Aug 2026 18:26:00 +0400 Subject: [PATCH 2/2] test: cover Requesty provider configuration Co-authored-by: Thibault Jaigu --- src/Cli/src/Helpers.cs | 35 ++++++++++--------- .../HelpersTests.cs | 14 ++++++++ 2 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 src/Cli/test/LangChain.Cli.IntegrationTests/HelpersTests.cs diff --git a/src/Cli/src/Helpers.cs b/src/Cli/src/Helpers.cs index b0f68b31..9d7a2eca 100644 --- a/src/Cli/src/Helpers.cs +++ b/src/Cli/src/Helpers.cs @@ -54,12 +54,7 @@ public static IChatClient GetChatModel( } IChatClient chatClient; - Uri? endpoint = provider switch - { - Provider.Free or Provider.OpenRouter => new Uri(tryAGI.OpenAI.CustomProviders.OpenRouterBaseUrl), - Provider.Requesty => new Uri("https://router.requesty.ai/v1"), - _ => null, - }; + var endpoint = GetEndpoint(provider); model = model switch { null => "o4-mini", @@ -69,16 +64,9 @@ public static IChatClient GetChatModel( "latest-smart" => "o3", _ => model, }; - var apiKey = provider switch - { - Provider.OpenAi or null => Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? - throw new InvalidOperationException("OPENAI_API_KEY environment variable is not set."), - Provider.OpenRouter or Provider.Free => Environment.GetEnvironmentVariable("OPENROUTER_API_KEY") ?? - throw new InvalidOperationException("OPENROUTER_API_KEY environment variable is not set."), - Provider.Requesty => Environment.GetEnvironmentVariable("REQUESTY_API_KEY") ?? - throw new InvalidOperationException("REQUESTY_API_KEY environment variable is not set."), - _ => throw new NotImplementedException(), - }; + var apiKeyEnvironmentVariable = GetApiKeyEnvironmentVariable(provider); + var apiKey = Environment.GetEnvironmentVariable(apiKeyEnvironmentVariable) ?? + throw new InvalidOperationException($"{apiKeyEnvironmentVariable} environment variable is not set."); switch (provider) { @@ -114,4 +102,19 @@ public static IChatClient GetChatModel( return client; } + + internal static Uri? GetEndpoint(Provider? provider) => provider switch + { + Provider.Free or Provider.OpenRouter => new Uri(tryAGI.OpenAI.CustomProviders.OpenRouterBaseUrl), + Provider.Requesty => new Uri("https://router.requesty.ai/v1"), + _ => null, + }; + + internal static string GetApiKeyEnvironmentVariable(Provider? provider) => provider switch + { + Provider.OpenAi or null => "OPENAI_API_KEY", + Provider.OpenRouter or Provider.Free => "OPENROUTER_API_KEY", + Provider.Requesty => "REQUESTY_API_KEY", + _ => throw new NotImplementedException(), + }; } diff --git a/src/Cli/test/LangChain.Cli.IntegrationTests/HelpersTests.cs b/src/Cli/test/LangChain.Cli.IntegrationTests/HelpersTests.cs new file mode 100644 index 00000000..1c9abf04 --- /dev/null +++ b/src/Cli/test/LangChain.Cli.IntegrationTests/HelpersTests.cs @@ -0,0 +1,14 @@ +using LangChain.Cli.Models; + +namespace LangChain.Cli.IntegrationTests; + +[TestFixture] +public class HelpersTests +{ + [Test] + public void Requesty_UsesExpectedEndpointAndApiKeyEnvironmentVariable() + { + Helpers.GetEndpoint(Provider.Requesty).Should().Be(new Uri("https://router.requesty.ai/v1")); + Helpers.GetApiKeyEnvironmentVariable(Provider.Requesty).Should().Be("REQUESTY_API_KEY"); + } +}