1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
const std = @import("std");
pub const Config = struct {
api_key: []const u8,
base_url: []const u8,
model: []const u8,
pub const Error = error{MissingApiKey};
pub fn fromEnv() Error!Config {
const api_key_z = std.c.getenv("PANTO_API_KEY") orelse return Error.MissingApiKey;
const api_key = std.mem.sliceTo(api_key_z, 0);
const base_url_z = std.c.getenv("PANTO_BASE_URL") orelse "https://api.openai.com/v1";
const base_url = std.mem.sliceTo(base_url_z, 0);
const model_z = std.c.getenv("PANTO_MODEL") orelse "gpt-4o";
const model = std.mem.sliceTo(model_z, 0);
return Config{
.api_key = api_key,
.base_url = base_url,
.model = model,
};
}
};
test "Config - defaults" {
const cfg = Config{
.api_key = "test-key",
.base_url = "https://api.openai.com/v1",
.model = "gpt-4o",
};
try std.testing.expectEqualStrings("test-key", cfg.api_key);
try std.testing.expectEqualStrings("https://api.openai.com/v1", cfg.base_url);
try std.testing.expectEqualStrings("gpt-4o", cfg.model);
}
|