Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 19 additions & 13 deletions src/Cli/src/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,7 @@ public static IChatClient GetChatModel(
}

IChatClient chatClient;
Uri? endpoint = provider switch
{
Provider.Free or Provider.OpenRouter => new Uri(tryAGI.OpenAI.CustomProviders.OpenRouterBaseUrl),
_ => null,
};
var endpoint = GetEndpoint(provider);
model = model switch
{
null => "o4-mini",
Expand All @@ -68,14 +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."),
_ => throw new NotImplementedException(),
};
var apiKeyEnvironmentVariable = GetApiKeyEnvironmentVariable(provider);
var apiKey = Environment.GetEnvironmentVariable(apiKeyEnvironmentVariable) ??
throw new InvalidOperationException($"{apiKeyEnvironmentVariable} environment variable is not set.");

switch (provider)
{
Expand Down Expand Up @@ -111,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(),
};
}
1 change: 1 addition & 0 deletions src/Cli/src/Models/Provider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ internal enum Provider
{
OpenAi,
OpenRouter,
Requesty,
Anthropic,
Free,
}
14 changes: 14 additions & 0 deletions src/Cli/test/LangChain.Cli.IntegrationTests/HelpersTests.cs
Original file line number Diff line number Diff line change
@@ -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");
}
}
Loading