Skip to content

Commit 55a3f3a

Browse files
authored
Merge pull request #1916 from JanHuege/introduce_seed_parameter_azure_openai
Introduce seed parameter for azure openai chat models
2 parents e3884f7 + 02d172c commit 55a3f3a

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

model-providers/openai/azure-openai/runtime/src/main/java/io/quarkiverse/langchain4j/azure/openai/AzureOpenAiChatModel.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public class AzureOpenAiChatModel implements ChatModel {
6565

6666
private final OpenAiClient client;
6767
private final Double temperature;
68+
private final Integer seed;
6869
private final Double topP;
6970
private final Integer maxTokens;
7071
private final Double presencePenalty;
@@ -80,6 +81,7 @@ public AzureOpenAiChatModel(String endpoint,
8081
String adToken,
8182
TokenCountEstimator tokenizer,
8283
Double temperature,
84+
Integer seed,
8385
Double topP,
8486
Integer maxTokens,
8587
Double presencePenalty,
@@ -112,6 +114,7 @@ public AzureOpenAiChatModel(String endpoint,
112114
.build();
113115

114116
this.temperature = getOrDefault(temperature, 0.7);
117+
this.seed = seed;
115118
this.topP = topP;
116119
this.maxTokens = maxTokens;
117120
this.presencePenalty = presencePenalty;
@@ -135,6 +138,7 @@ public ChatResponse doChat(ChatRequest chatRequest) {
135138
ChatCompletionRequest.Builder requestBuilder = ChatCompletionRequest.builder()
136139
.messages(toOpenAiMessages(messages))
137140
.temperature(temperature)
141+
.seed(seed)
138142
.topP(topP)
139143
.maxTokens(maxTokens)
140144
.presencePenalty(presencePenalty)
@@ -247,6 +251,7 @@ public static class Builder {
247251
private String adToken;
248252
private TokenCountEstimator tokenizer;
249253
private Double temperature;
254+
private Integer seed;
250255
private Double topP;
251256
private Integer maxTokens;
252257
private Double presencePenalty;
@@ -314,6 +319,11 @@ public Builder temperature(Double temperature) {
314319
return this;
315320
}
316321

322+
public Builder seed(Integer seed) {
323+
this.seed = seed;
324+
return this;
325+
}
326+
317327
public Builder topP(Double topP) {
318328
this.topP = topP;
319329
return this;
@@ -376,6 +386,7 @@ public AzureOpenAiChatModel build() {
376386
adToken,
377387
tokenizer,
378388
temperature,
389+
seed,
379390
topP,
380391
maxTokens,
381392
presencePenalty,

model-providers/openai/azure-openai/runtime/src/main/java/io/quarkiverse/langchain4j/azure/openai/runtime/AzureOpenAiRecorder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ public Function<SyntheticCreationalContext<ChatModel>, ChatModel> chatModel(Stri
9696
builder.maxTokens(chatModelConfig.maxTokens().get());
9797
}
9898

99+
if (chatModelConfig.seed().isPresent()) {
100+
builder.maxTokens(chatModelConfig.seed().get());
101+
}
102+
99103
return new Function<>() {
100104
@Override
101105
public ChatModel apply(SyntheticCreationalContext<ChatModel> context) {

model-providers/openai/azure-openai/runtime/src/main/java/io/quarkiverse/langchain4j/azure/openai/runtime/config/ChatModelConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ public interface ChatModelConfig {
7272
@WithDefault("1.0")
7373
Double topP();
7474

75+
/**
76+
* If specified, our system will make the best effort to sample deterministically, such that repeated requests with the same
77+
* seed and parameters should return the same result. Determinism isn't guaranteed.
78+
* Support for reproducible output was first added in API version 2023-12-01-preview
79+
*/
80+
Optional<Integer> seed();
81+
7582
/**
7683
* The maximum number of tokens to generate in the completion. The token count of your prompt plus max_tokens can't exceed
7784
* the model's context length.

model-providers/openai/azure-openai/runtime/src/test/java/io/quarkiverse/langchain4j/azure/openai/runtime/AzureOpenAiRecorderEndpointTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,11 @@ public Double topP() {
259259
return null;
260260
}
261261

262+
@Override
263+
public Optional<Integer> seed() {
264+
return Optional.empty();
265+
}
266+
262267
@Override
263268
public Optional<Integer> maxTokens() {
264269
return Optional.empty();

0 commit comments

Comments
 (0)