1
+ import "@typespec/rest" ;
2
+ import "@typespec/http" ;
3
+ import "./completions.common.tsp" ;
4
+
5
+ using TypeSpec .Rest ;
6
+ using TypeSpec .Http ;
7
+
8
+ @ doc ("A description of the intended purpose of a message within a chat completions interaction." )
9
+ enum ChatRole {
10
+ @ doc ("The role that instructs or sets the behavior of the assistant." )
11
+ @ projectedName ("json" , "system" )
12
+ system ,
13
+
14
+ @ doc ("The role that provides responses to system-instructed, user-prompted input." )
15
+ @ projectedName ("json" , "assistant" )
16
+ assistant ,
17
+
18
+ @ doc ("The role that provides input for chat completions." )
19
+ @ projectedName ("json" , "user" )
20
+ user ,
21
+ }
22
+
23
+ @ doc ("A single, role-attributed message within a chat completion interaction." )
24
+ model ChatMessage {
25
+ @ doc ("The role associated with this message payload." )
26
+ @ projectedName ("json" , "role" )
27
+ role : ChatRole ;
28
+
29
+ @ doc ("The text associated with this message payload." )
30
+ @ projectedName ("json" , "content" )
31
+ content ? : string ;
32
+ }
33
+
34
+ @ doc ("""
35
+ The configuration information for a chat completions request.
36
+ Completions support a wide variety of tasks and generate text that continues from or "completes"
37
+ provided prompt data.
38
+ """ )
39
+ model ChatCompletionsOptions {
40
+ @ doc ("""
41
+ The collection of context messages associated with this chat completions request.
42
+ Typical usage begins with a chat message for the System role that provides instructions for
43
+ the behavior of the assistant, followed by alternating messages between the User and
44
+ Assistant roles.
45
+ """ )
46
+ @ projectedName ("json" , "messages" )
47
+ messages : ChatMessage [];
48
+
49
+ @ doc ("The maximum number of tokens to generate." )
50
+ @ projectedName ("json" , "max_tokens" )
51
+ maxTokens ? : int32 ;
52
+
53
+ @ doc ("""
54
+ The sampling temperature to use that controls the apparent creativity of generated completions.
55
+ Higher values will make output more random while lower values will make results more focused
56
+ and deterministic.
57
+ It is not recommended to modify temperature and top_p for the same completions request as the
58
+ interaction of these two settings is difficult to predict.
59
+ """ )
60
+ @ projectedName ("json" , "temperature" )
61
+ temperature ? : float32 ;
62
+
63
+ @ doc ("""
64
+ An alternative to sampling with temperature called nucleus sampling. This value causes the
65
+ model to consider the results of tokens with the provided probability mass. As an example, a
66
+ value of 0.15 will cause only the tokens comprising the top 15% of probability mass to be
67
+ considered.
68
+ It is not recommended to modify temperature and top_p for the same completions request as the
69
+ interaction of these two settings is difficult to predict.
70
+ """ )
71
+ @ projectedName ("json" , "top_p" )
72
+ @ projectedName ("csharp" , "NucleusSamplingFactor" )
73
+ topP ? : float32 ;
74
+
75
+ @ doc ("""
76
+ A map between GPT token IDs and bias scores that influences the probability of specific tokens
77
+ appearing in a completions response. Token IDs are computed via external tokenizer tools, while
78
+ bias scores reside in the range of -100 to 100 with minimum and maximum values corresponding to
79
+ a full ban or exclusive selection of a token, respectively. The exact behavior of a given bias
80
+ score varies by model.
81
+ """ )
82
+ @ projectedName ("json" , "logit_bias" )
83
+ @ projectedName ("csharp" , "InternalStringKeyedTokenSelectionBiases" )
84
+ logitBias ? : Record <int32 >;
85
+
86
+ @ doc ("""
87
+ An identifier for the caller or end user of the operation. This may be used for tracking
88
+ or rate-limiting purposes.
89
+ """ )
90
+ @ projectedName ("json" , "user" )
91
+ user ? : string ;
92
+
93
+ @ doc ("""
94
+ The number of chat completions choices that should be generated for a chat completions
95
+ response.
96
+ Because this setting can generate many completions, it may quickly consume your token quota.
97
+ Use carefully and ensure reasonable settings for max_tokens and stop.
98
+ """ )
99
+ @ projectedName ("json" , "n" )
100
+ @ projectedName ("csharp" , "ChoiceCount" )
101
+ n ? : int32 ;
102
+
103
+ @ doc ("""
104
+ A collection of textual sequences that will end completions generation.
105
+ """ )
106
+ @ projectedName ("json" , "stop" )
107
+ @ projectedName ("csharp" , "StopSequences" )
108
+ stop ? : string [];
109
+
110
+ @ doc ("""
111
+ A value that influences the probability of generated tokens appearing based on their existing
112
+ presence in generated text.
113
+ Positive values will make tokens less likely to appear when they already exist and increase the
114
+ model's likelihood to output new topics.
115
+ """ )
116
+ @ projectedName ("json" , "presence_penalty" )
117
+ presencePenalty ? : float32 ;
118
+
119
+ @ doc ("""
120
+ A value that influences the probability of generated tokens appearing based on their cumulative
121
+ frequency in generated text.
122
+ Positive values will make tokens less likely to appear as their frequency increases and
123
+ decrease the likelihood of the model repeating the same statements verbatim.
124
+ """ )
125
+ @ projectedName ("json" , "frequency_penalty" )
126
+ frequencyPenalty ? : float32 ;
127
+
128
+ @ doc ("""
129
+ A value indicating whether chat completions should be streamed for this request.
130
+ """ )
131
+ @ projectedName ("json" , "stream" )
132
+ @ projectedName ("csharp" , "InternalShouldStreamResponse" )
133
+ stream ? : boolean ;
134
+
135
+ @ doc ("""
136
+ The model name to provide as part of this completions request.
137
+ Not applicable to Azure OpenAI, where deployment information should be included in the Azure
138
+ resource URI that's connected to.
139
+ """ )
140
+ @ projectedName ("json" , "model" )
141
+ @ projectedName ("csharp" , "InternalNonAzureModelName" )
142
+ "model" ?: string ;
143
+ };
144
+
145
+ @ doc ("""
146
+ The representation of a single prompt completion as part of an overall chat completions request.
147
+ Generally, `n` choices are generated per provided prompt with a default value of 1.
148
+ Token limits and other settings may limit the number of choices generated.
149
+ """ )
150
+ model ChatChoice {
151
+ @ doc ("The chat message for a given chat completions prompt." )
152
+ @ projectedName ("json" , "message" )
153
+ message ? : ChatMessage ;
154
+
155
+ @ doc ("The ordered index associated with this chat completions choice." )
156
+ @ projectedName ("json" , "index" )
157
+ index : int32 ;
158
+
159
+ @ doc ("The reason that this chat completions choice completed its generated." )
160
+ @ projectedName ("json" , "finish_reason" )
161
+ finishReason : CompletionsFinishReason | null ;
162
+
163
+ @ doc ("The delta message content for a streaming response." )
164
+ @ projectedName ("json" , "delta" )
165
+ @ projectedName ("csharp" , "InternalStreamingDeltaMessage" )
166
+ delta ? : ChatMessage ;
167
+ }
168
+
169
+ @ doc ("""
170
+ Representation of the response data from a chat completions request.
171
+ Completions support a wide variety of tasks and generate text that continues from or "completes"
172
+ provided prompt data.
173
+ """ )
174
+ model ChatCompletions {
175
+ @ doc ("A unique identifier associated with this chat completions response." )
176
+ @ projectedName ("json" , "id" )
177
+ id : string ;
178
+
179
+ @ doc ("""
180
+ The first timestamp associated with generation activity for this completions response,
181
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970.
182
+ """ )
183
+ @ projectedName ("json" , "created" )
184
+ @ projectedName ("csharp" , "InternalCreatedSecondsAfterUnixEpoch" )
185
+ created : int32 ;
186
+
187
+ @ doc ("""
188
+ The collection of completions choices associated with this completions response.
189
+ Generally, `n` choices are generated per provided prompt with a default value of 1.
190
+ Token limits and other settings may limit the number of choices generated.
191
+ """ )
192
+ @ projectedName ("json" , "choices" )
193
+ choices : ChatChoice [];
194
+
195
+ @ doc ("""
196
+ Usage information for tokens processed and generated as part of this completions operation.
197
+ """ )
198
+ @ projectedName ("json" , "usage" )
199
+ usage : CompletionsUsage ;
200
+ }
0 commit comments