46public record
DeepSeekConfig(String apiKey, URI baseUri, Duration timeout, Map<String, String> defaultHeaders) {
49 private static final URI DEFAULT_BASE_URI = URI.create(
"https://api.deepseek.com/");
52 private static final Duration DEFAULT_TIMEOUT = Duration.ofSeconds(30);
61 Objects.requireNonNull(apiKey,
"apiKey");
62 if (apiKey.isBlank()) {
63 throw new IllegalArgumentException(
"apiKey must not be blank");
65 baseUri = normalizeBaseUri(baseUri ==
null ? DEFAULT_BASE_URI : baseUri);
66 timeout = timeout ==
null ? DEFAULT_TIMEOUT : timeout;
67 defaultHeaders = defaultHeaders ==
null ? Map.of() : Map.copyOf(defaultHeaders);
71 return new DeepSeekConfig(apiKey, DEFAULT_BASE_URI, DEFAULT_TIMEOUT, Map.of());
74 public URI chatCompletionsUri() {
75 return baseUri.resolve(
"chat/completions");
78 private static URI normalizeBaseUri(
final URI baseUri) {
79 final String value = baseUri.toString();
80 return URI.create(value.endsWith(
"/") ? value : value +
"/");
record DeepSeekConfig(String apiKey, URI baseUri, Duration timeout, Map< String, String > defaultHeaders)
Immutable configuration for connecting to the DeepSeek chat completions API.