langfun 0.1.2.dev202410110804__py3-none-any.whl → 0.1.2.dev202410130803__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langfun/core/__init__.py +1 -0
- langfun/core/eval/base_test.py +1 -0
- langfun/core/langfunc_test.py +2 -2
- langfun/core/language_model.py +140 -24
- langfun/core/language_model_test.py +166 -36
- langfun/core/llms/__init__.py +8 -1
- langfun/core/llms/anthropic.py +72 -7
- langfun/core/llms/cache/in_memory_test.py +3 -2
- langfun/core/llms/fake_test.py +7 -0
- langfun/core/llms/groq.py +154 -6
- langfun/core/llms/openai.py +300 -42
- langfun/core/llms/openai_test.py +35 -8
- langfun/core/llms/vertexai.py +121 -16
- langfun/core/logging.py +9 -3
- langfun/core/message.py +23 -12
- langfun/core/message_test.py +2 -2
- langfun/core/structured/completion_test.py +1 -0
- langfun/core/structured/mapping.py +1 -1
- langfun/core/structured/parsing_test.py +2 -1
- langfun/core/structured/prompting_test.py +1 -0
- langfun/core/template.py +8 -5
- langfun/core/templates/selfplay_test.py +4 -2
- {langfun-0.1.2.dev202410110804.dist-info → langfun-0.1.2.dev202410130803.dist-info}/METADATA +1 -1
- {langfun-0.1.2.dev202410110804.dist-info → langfun-0.1.2.dev202410130803.dist-info}/RECORD +27 -27
- {langfun-0.1.2.dev202410110804.dist-info → langfun-0.1.2.dev202410130803.dist-info}/LICENSE +0 -0
- {langfun-0.1.2.dev202410110804.dist-info → langfun-0.1.2.dev202410130803.dist-info}/WHEEL +0 -0
- {langfun-0.1.2.dev202410110804.dist-info → langfun-0.1.2.dev202410130803.dist-info}/top_level.txt +0 -0
langfun/core/llms/openai.py
CHANGED
@@ -50,57 +50,285 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
50
50
|
# Models from https://platform.openai.com/docs/models
|
51
51
|
# RPM is from https://platform.openai.com/docs/guides/rate-limits
|
52
52
|
# o1 (preview) models.
|
53
|
-
|
54
|
-
|
55
|
-
'o1-
|
56
|
-
|
53
|
+
# Pricing in US dollars, from https://openai.com/api/pricing/
|
54
|
+
# as of 2024-10-10.
|
55
|
+
'o1-preview': pg.Dict(
|
56
|
+
in_service=True,
|
57
|
+
rpm=10000,
|
58
|
+
tpm=5000000,
|
59
|
+
cost_per_1k_input_tokens=0.015,
|
60
|
+
cost_per_1k_output_tokens=0.06,
|
61
|
+
),
|
62
|
+
'o1-preview-2024-09-12': pg.Dict(
|
63
|
+
in_service=True,
|
64
|
+
rpm=10000,
|
65
|
+
tpm=5000000,
|
66
|
+
cost_per_1k_input_tokens=0.015,
|
67
|
+
cost_per_1k_output_tokens=0.06,
|
68
|
+
),
|
69
|
+
'o1-mini': pg.Dict(
|
70
|
+
in_service=True,
|
71
|
+
rpm=10000,
|
72
|
+
tpm=5000000,
|
73
|
+
cost_per_1k_input_tokens=0.003,
|
74
|
+
cost_per_1k_output_tokens=0.012,
|
75
|
+
),
|
76
|
+
'o1-mini-2024-09-12': pg.Dict(
|
77
|
+
in_service=True,
|
78
|
+
rpm=10000,
|
79
|
+
tpm=5000000,
|
80
|
+
cost_per_1k_input_tokens=0.003,
|
81
|
+
cost_per_1k_output_tokens=0.012,
|
82
|
+
),
|
57
83
|
# GPT-4o models
|
58
|
-
'gpt-4o-mini': pg.Dict(
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
84
|
+
'gpt-4o-mini': pg.Dict(
|
85
|
+
in_service=True,
|
86
|
+
rpm=10000,
|
87
|
+
tpm=5000000,
|
88
|
+
cost_per_1k_input_tokens=0.00015,
|
89
|
+
cost_per_1k_output_tokens=0.0006,
|
90
|
+
),
|
91
|
+
'gpt-4o-mini-2024-07-18': pg.Dict(
|
92
|
+
in_service=True,
|
93
|
+
rpm=10000,
|
94
|
+
tpm=5000000,
|
95
|
+
cost_per_1k_input_tokens=0.00015,
|
96
|
+
cost_per_1k_output_tokens=0.0006,
|
97
|
+
),
|
98
|
+
'gpt-4o': pg.Dict(
|
99
|
+
in_service=True,
|
100
|
+
rpm=10000,
|
101
|
+
tpm=5000000,
|
102
|
+
cost_per_1k_input_tokens=0.0025,
|
103
|
+
cost_per_1k_output_tokens=0.01,
|
104
|
+
),
|
105
|
+
'gpt-4o-2024-08-06': pg.Dict(
|
106
|
+
in_service=True,
|
107
|
+
rpm=10000,
|
108
|
+
tpm=5000000,
|
109
|
+
cost_per_1k_input_tokens=0.0025,
|
110
|
+
cost_per_1k_output_tokens=0.01,
|
111
|
+
),
|
112
|
+
'gpt-4o-2024-05-13': pg.Dict(
|
113
|
+
in_service=True,
|
114
|
+
rpm=10000,
|
115
|
+
tpm=5000000,
|
116
|
+
cost_per_1k_input_tokens=0.005,
|
117
|
+
cost_per_1k_output_tokens=0.015,
|
118
|
+
),
|
63
119
|
# GPT-4-Turbo models
|
64
|
-
'gpt-4-turbo': pg.Dict(
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
120
|
+
'gpt-4-turbo': pg.Dict(
|
121
|
+
in_service=True,
|
122
|
+
rpm=10000,
|
123
|
+
tpm=2000000,
|
124
|
+
cost_per_1k_input_tokens=0.01,
|
125
|
+
cost_per_1k_output_tokens=0.03,
|
126
|
+
),
|
127
|
+
'gpt-4-turbo-2024-04-09': pg.Dict(
|
128
|
+
in_service=True,
|
129
|
+
rpm=10000,
|
130
|
+
tpm=2000000,
|
131
|
+
cost_per_1k_input_tokens=0.01,
|
132
|
+
cost_per_1k_output_tokens=0.03,
|
133
|
+
),
|
134
|
+
'gpt-4-turbo-preview': pg.Dict(
|
135
|
+
in_service=True,
|
136
|
+
rpm=10000,
|
137
|
+
tpm=2000000,
|
138
|
+
cost_per_1k_input_tokens=0.01,
|
139
|
+
cost_per_1k_output_tokens=0.03,
|
140
|
+
),
|
141
|
+
'gpt-4-0125-preview': pg.Dict(
|
142
|
+
in_service=True,
|
143
|
+
rpm=10000,
|
144
|
+
tpm=2000000,
|
145
|
+
cost_per_1k_input_tokens=0.01,
|
146
|
+
cost_per_1k_output_tokens=0.03,
|
147
|
+
),
|
148
|
+
'gpt-4-1106-preview': pg.Dict(
|
149
|
+
in_service=True,
|
150
|
+
rpm=10000,
|
151
|
+
tpm=2000000,
|
152
|
+
cost_per_1k_input_tokens=0.01,
|
153
|
+
cost_per_1k_output_tokens=0.03,
|
154
|
+
),
|
155
|
+
'gpt-4-vision-preview': pg.Dict(
|
156
|
+
in_service=True,
|
157
|
+
rpm=10000,
|
158
|
+
tpm=2000000,
|
159
|
+
cost_per_1k_input_tokens=0.01,
|
160
|
+
cost_per_1k_output_tokens=0.03,
|
161
|
+
),
|
70
162
|
'gpt-4-1106-vision-preview': pg.Dict(
|
71
|
-
|
163
|
+
in_service=True,
|
164
|
+
rpm=10000,
|
165
|
+
tpm=2000000,
|
166
|
+
cost_per_1k_input_tokens=0.01,
|
167
|
+
cost_per_1k_output_tokens=0.03,
|
72
168
|
),
|
73
169
|
# GPT-4 models
|
74
|
-
'gpt-4': pg.Dict(
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
170
|
+
'gpt-4': pg.Dict(
|
171
|
+
in_service=True,
|
172
|
+
rpm=10000,
|
173
|
+
tpm=300000,
|
174
|
+
cost_per_1k_input_tokens=0.03,
|
175
|
+
cost_per_1k_output_tokens=0.06,
|
176
|
+
),
|
177
|
+
'gpt-4-0613': pg.Dict(
|
178
|
+
in_service=False,
|
179
|
+
rpm=10000,
|
180
|
+
tpm=300000,
|
181
|
+
cost_per_1k_input_tokens=0.03,
|
182
|
+
cost_per_1k_output_tokens=0.06,
|
183
|
+
),
|
184
|
+
'gpt-4-0314': pg.Dict(
|
185
|
+
in_service=False,
|
186
|
+
rpm=10000,
|
187
|
+
tpm=300000,
|
188
|
+
cost_per_1k_input_tokens=0.03,
|
189
|
+
cost_per_1k_output_tokens=0.06,
|
190
|
+
),
|
191
|
+
'gpt-4-32k': pg.Dict(
|
192
|
+
in_service=True,
|
193
|
+
rpm=10000,
|
194
|
+
tpm=300000,
|
195
|
+
cost_per_1k_input_tokens=0.06,
|
196
|
+
cost_per_1k_output_tokens=0.12,
|
197
|
+
),
|
198
|
+
'gpt-4-32k-0613': pg.Dict(
|
199
|
+
in_service=False,
|
200
|
+
rpm=10000,
|
201
|
+
tpm=300000,
|
202
|
+
cost_per_1k_input_tokens=0.06,
|
203
|
+
cost_per_1k_output_tokens=0.12,
|
204
|
+
),
|
205
|
+
'gpt-4-32k-0314': pg.Dict(
|
206
|
+
in_service=False,
|
207
|
+
rpm=10000,
|
208
|
+
tpm=300000,
|
209
|
+
cost_per_1k_input_tokens=0.06,
|
210
|
+
cost_per_1k_output_tokens=0.12,
|
211
|
+
),
|
80
212
|
# GPT-3.5-Turbo models
|
81
|
-
'gpt-3.5-turbo': pg.Dict(
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
'gpt-3.5-turbo-
|
213
|
+
'gpt-3.5-turbo': pg.Dict(
|
214
|
+
in_service=True,
|
215
|
+
rpm=10000,
|
216
|
+
tpm=2000000,
|
217
|
+
cost_per_1k_input_tokens=0.0005,
|
218
|
+
cost_per_1k_output_tokens=0.0015,
|
219
|
+
),
|
220
|
+
'gpt-3.5-turbo-0125': pg.Dict(
|
221
|
+
in_service=True,
|
222
|
+
rpm=10000,
|
223
|
+
tpm=2000000,
|
224
|
+
cost_per_1k_input_tokens=0.0005,
|
225
|
+
cost_per_1k_output_tokens=0.0015,
|
226
|
+
),
|
227
|
+
'gpt-3.5-turbo-1106': pg.Dict(
|
228
|
+
in_service=True,
|
229
|
+
rpm=10000,
|
230
|
+
tpm=2000000,
|
231
|
+
cost_per_1k_input_tokens=0.001,
|
232
|
+
cost_per_1k_output_tokens=0.002,
|
233
|
+
),
|
234
|
+
'gpt-3.5-turbo-0613': pg.Dict(
|
235
|
+
in_service=True,
|
236
|
+
rpm=10000,
|
237
|
+
tpm=2000000,
|
238
|
+
cost_per_1k_input_tokens=0.0015,
|
239
|
+
cost_per_1k_output_tokens=0.002,
|
240
|
+
),
|
241
|
+
'gpt-3.5-turbo-0301': pg.Dict(
|
242
|
+
in_service=True,
|
243
|
+
rpm=10000,
|
244
|
+
tpm=2000000,
|
245
|
+
cost_per_1k_input_tokens=0.0015,
|
246
|
+
cost_per_1k_output_tokens=0.002,
|
247
|
+
),
|
248
|
+
'gpt-3.5-turbo-16k': pg.Dict(
|
249
|
+
in_service=True,
|
250
|
+
rpm=10000,
|
251
|
+
tpm=2000000,
|
252
|
+
cost_per_1k_input_tokens=0.003,
|
253
|
+
cost_per_1k_output_tokens=0.004,
|
254
|
+
),
|
255
|
+
'gpt-3.5-turbo-16k-0613': pg.Dict(
|
256
|
+
in_service=True,
|
257
|
+
rpm=10000,
|
258
|
+
tpm=2000000,
|
259
|
+
cost_per_1k_input_tokens=0.003,
|
260
|
+
cost_per_1k_output_tokens=0.004,
|
261
|
+
),
|
262
|
+
'gpt-3.5-turbo-16k-0301': pg.Dict(
|
263
|
+
in_service=False,
|
264
|
+
rpm=10000,
|
265
|
+
tpm=2000000,
|
266
|
+
cost_per_1k_input_tokens=0.003,
|
267
|
+
cost_per_1k_output_tokens=0.004,
|
268
|
+
),
|
89
269
|
# GPT-3.5 models
|
90
|
-
'text-davinci-003': pg.Dict(
|
91
|
-
|
92
|
-
|
270
|
+
'text-davinci-003': pg.Dict(
|
271
|
+
in_service=False,
|
272
|
+
rpm=_DEFAULT_RPM,
|
273
|
+
tpm=_DEFAULT_TPM
|
274
|
+
),
|
275
|
+
'text-davinci-002': pg.Dict(
|
276
|
+
in_service=False,
|
277
|
+
rpm=_DEFAULT_RPM,
|
278
|
+
tpm=_DEFAULT_TPM
|
279
|
+
),
|
280
|
+
'code-davinci-002': pg.Dict(
|
281
|
+
in_service=False,
|
282
|
+
rpm=_DEFAULT_RPM,
|
283
|
+
tpm=_DEFAULT_TPM
|
284
|
+
),
|
93
285
|
# GPT-3 instruction-tuned models
|
94
|
-
'text-curie-001': pg.Dict(
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
'babbage': pg.Dict(
|
100
|
-
|
286
|
+
'text-curie-001': pg.Dict(
|
287
|
+
in_service=False,
|
288
|
+
rpm=_DEFAULT_RPM,
|
289
|
+
tpm=_DEFAULT_TPM
|
290
|
+
),
|
291
|
+
'text-babbage-001': pg.Dict(
|
292
|
+
in_service=False,
|
293
|
+
rpm=_DEFAULT_RPM,
|
294
|
+
tpm=_DEFAULT_TPM,
|
295
|
+
),
|
296
|
+
'text-ada-001': pg.Dict(
|
297
|
+
in_service=False,
|
298
|
+
rpm=_DEFAULT_RPM,
|
299
|
+
tpm=_DEFAULT_TPM,
|
300
|
+
),
|
301
|
+
'davinci': pg.Dict(
|
302
|
+
in_service=False,
|
303
|
+
rpm=_DEFAULT_RPM,
|
304
|
+
tpm=_DEFAULT_TPM,
|
305
|
+
),
|
306
|
+
'curie': pg.Dict(
|
307
|
+
in_service=False,
|
308
|
+
rpm=_DEFAULT_RPM,
|
309
|
+
tpm=_DEFAULT_TPM
|
310
|
+
),
|
311
|
+
'babbage': pg.Dict(
|
312
|
+
in_service=False,
|
313
|
+
rpm=_DEFAULT_RPM,
|
314
|
+
tpm=_DEFAULT_TPM
|
315
|
+
),
|
316
|
+
'ada': pg.Dict(
|
317
|
+
in_service=False,
|
318
|
+
rpm=_DEFAULT_RPM,
|
319
|
+
tpm=_DEFAULT_TPM
|
320
|
+
),
|
101
321
|
# GPT-3 base models
|
102
|
-
'babbage-002': pg.Dict(
|
103
|
-
|
322
|
+
'babbage-002': pg.Dict(
|
323
|
+
in_service=False,
|
324
|
+
rpm=_DEFAULT_RPM,
|
325
|
+
tpm=_DEFAULT_TPM
|
326
|
+
),
|
327
|
+
'davinci-002': pg.Dict(
|
328
|
+
in_service=True,
|
329
|
+
rpm=_DEFAULT_RPM,
|
330
|
+
tpm=_DEFAULT_TPM
|
331
|
+
),
|
104
332
|
}
|
105
333
|
|
106
334
|
|
@@ -172,6 +400,25 @@ class OpenAI(lf.LanguageModel):
|
|
172
400
|
requests_per_min=rpm, tokens_per_min=tpm
|
173
401
|
)
|
174
402
|
|
403
|
+
def estimate_cost(
|
404
|
+
self,
|
405
|
+
num_input_tokens: int,
|
406
|
+
num_output_tokens: int
|
407
|
+
) -> float | None:
|
408
|
+
"""Estimate the cost based on usage."""
|
409
|
+
cost_per_1k_input_tokens = SUPPORTED_MODELS_AND_SETTINGS[self.model].get(
|
410
|
+
'cost_per_1k_input_tokens', None
|
411
|
+
)
|
412
|
+
cost_per_1k_output_tokens = SUPPORTED_MODELS_AND_SETTINGS[self.model].get(
|
413
|
+
'cost_per_1k_output_tokens', None
|
414
|
+
)
|
415
|
+
if cost_per_1k_output_tokens is None or cost_per_1k_input_tokens is None:
|
416
|
+
return None
|
417
|
+
return (
|
418
|
+
cost_per_1k_input_tokens * num_input_tokens
|
419
|
+
+ cost_per_1k_output_tokens * num_output_tokens
|
420
|
+
) / 1000
|
421
|
+
|
175
422
|
@classmethod
|
176
423
|
def dir(cls):
|
177
424
|
assert openai is not None
|
@@ -239,10 +486,17 @@ class OpenAI(lf.LanguageModel):
|
|
239
486
|
)
|
240
487
|
|
241
488
|
n = len(samples_by_index)
|
489
|
+
estimated_cost = self.estimate_cost(
|
490
|
+
num_input_tokens=response.usage.prompt_tokens,
|
491
|
+
num_output_tokens=response.usage.completion_tokens,
|
492
|
+
)
|
242
493
|
usage = lf.LMSamplingUsage(
|
243
494
|
prompt_tokens=response.usage.prompt_tokens // n,
|
244
495
|
completion_tokens=response.usage.completion_tokens // n,
|
245
496
|
total_tokens=response.usage.total_tokens // n,
|
497
|
+
estimated_cost=(
|
498
|
+
None if estimated_cost is None else (estimated_cost // n)
|
499
|
+
)
|
246
500
|
)
|
247
501
|
return [
|
248
502
|
lf.LMSamplingResult(samples_by_index[index], usage=usage)
|
@@ -350,6 +604,10 @@ class OpenAI(lf.LanguageModel):
|
|
350
604
|
prompt_tokens=response.usage.prompt_tokens,
|
351
605
|
completion_tokens=response.usage.completion_tokens,
|
352
606
|
total_tokens=response.usage.total_tokens,
|
607
|
+
estimated_cost=self.estimate_cost(
|
608
|
+
num_input_tokens=response.usage.prompt_tokens,
|
609
|
+
num_output_tokens=response.usage.completion_tokens,
|
610
|
+
)
|
353
611
|
),
|
354
612
|
)
|
355
613
|
|
langfun/core/llms/openai_test.py
CHANGED
@@ -210,6 +210,7 @@ class OpenAITest(unittest.TestCase):
|
|
210
210
|
'Sample 0 for prompt 0.',
|
211
211
|
score=0.0,
|
212
212
|
logprobs=None,
|
213
|
+
is_cached=False,
|
213
214
|
usage=lf.LMSamplingUsage(
|
214
215
|
prompt_tokens=16,
|
215
216
|
completion_tokens=16,
|
@@ -225,6 +226,7 @@ class OpenAITest(unittest.TestCase):
|
|
225
226
|
'Sample 1 for prompt 0.',
|
226
227
|
score=0.1,
|
227
228
|
logprobs=None,
|
229
|
+
is_cached=False,
|
228
230
|
usage=lf.LMSamplingUsage(
|
229
231
|
prompt_tokens=16,
|
230
232
|
completion_tokens=16,
|
@@ -240,6 +242,7 @@ class OpenAITest(unittest.TestCase):
|
|
240
242
|
'Sample 2 for prompt 0.',
|
241
243
|
score=0.2,
|
242
244
|
logprobs=None,
|
245
|
+
is_cached=False,
|
243
246
|
usage=lf.LMSamplingUsage(
|
244
247
|
prompt_tokens=16,
|
245
248
|
completion_tokens=16,
|
@@ -265,6 +268,7 @@ class OpenAITest(unittest.TestCase):
|
|
265
268
|
'Sample 0 for prompt 1.',
|
266
269
|
score=0.0,
|
267
270
|
logprobs=None,
|
271
|
+
is_cached=False,
|
268
272
|
usage=lf.LMSamplingUsage(
|
269
273
|
prompt_tokens=16,
|
270
274
|
completion_tokens=16,
|
@@ -280,6 +284,7 @@ class OpenAITest(unittest.TestCase):
|
|
280
284
|
'Sample 1 for prompt 1.',
|
281
285
|
score=0.1,
|
282
286
|
logprobs=None,
|
287
|
+
is_cached=False,
|
283
288
|
usage=lf.LMSamplingUsage(
|
284
289
|
prompt_tokens=16,
|
285
290
|
completion_tokens=16,
|
@@ -295,6 +300,7 @@ class OpenAITest(unittest.TestCase):
|
|
295
300
|
'Sample 2 for prompt 1.',
|
296
301
|
score=0.2,
|
297
302
|
logprobs=None,
|
303
|
+
is_cached=False,
|
298
304
|
usage=lf.LMSamplingUsage(
|
299
305
|
prompt_tokens=16,
|
300
306
|
completion_tokens=16,
|
@@ -315,12 +321,17 @@ class OpenAITest(unittest.TestCase):
|
|
315
321
|
def test_sample_chat_completion(self):
|
316
322
|
with mock.patch('openai.ChatCompletion.create') as mock_chat_completion:
|
317
323
|
mock_chat_completion.side_effect = mock_chat_completion_query
|
324
|
+
openai.SUPPORTED_MODELS_AND_SETTINGS['gpt-4'].update({
|
325
|
+
'cost_per_1k_input_tokens': 1.0,
|
326
|
+
'cost_per_1k_output_tokens': 1.0,
|
327
|
+
})
|
318
328
|
lm = openai.OpenAI(api_key='test_key', model='gpt-4')
|
319
329
|
results = lm.sample(
|
320
330
|
['hello', 'bye'], sampling_options=lf.LMSamplingOptions(n=3)
|
321
331
|
)
|
322
332
|
|
323
333
|
self.assertEqual(len(results), 2)
|
334
|
+
print(results[0])
|
324
335
|
self.assertEqual(
|
325
336
|
results[0],
|
326
337
|
lf.LMSamplingResult(
|
@@ -330,10 +341,12 @@ class OpenAITest(unittest.TestCase):
|
|
330
341
|
'Sample 0 for message.',
|
331
342
|
score=0.0,
|
332
343
|
logprobs=None,
|
344
|
+
is_cached=False,
|
333
345
|
usage=lf.LMSamplingUsage(
|
334
346
|
prompt_tokens=33,
|
335
347
|
completion_tokens=33,
|
336
|
-
total_tokens=66
|
348
|
+
total_tokens=66,
|
349
|
+
estimated_cost=0.2 / 3,
|
337
350
|
),
|
338
351
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
339
352
|
),
|
@@ -345,10 +358,12 @@ class OpenAITest(unittest.TestCase):
|
|
345
358
|
'Sample 1 for message.',
|
346
359
|
score=0.0,
|
347
360
|
logprobs=None,
|
361
|
+
is_cached=False,
|
348
362
|
usage=lf.LMSamplingUsage(
|
349
363
|
prompt_tokens=33,
|
350
364
|
completion_tokens=33,
|
351
|
-
total_tokens=66
|
365
|
+
total_tokens=66,
|
366
|
+
estimated_cost=0.2 / 3,
|
352
367
|
),
|
353
368
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
354
369
|
),
|
@@ -360,10 +375,12 @@ class OpenAITest(unittest.TestCase):
|
|
360
375
|
'Sample 2 for message.',
|
361
376
|
score=0.0,
|
362
377
|
logprobs=None,
|
378
|
+
is_cached=False,
|
363
379
|
usage=lf.LMSamplingUsage(
|
364
380
|
prompt_tokens=33,
|
365
381
|
completion_tokens=33,
|
366
|
-
total_tokens=66
|
382
|
+
total_tokens=66,
|
383
|
+
estimated_cost=0.2 / 3,
|
367
384
|
),
|
368
385
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
369
386
|
),
|
@@ -372,7 +389,8 @@ class OpenAITest(unittest.TestCase):
|
|
372
389
|
),
|
373
390
|
],
|
374
391
|
usage=lf.LMSamplingUsage(
|
375
|
-
prompt_tokens=100, completion_tokens=100, total_tokens=200
|
392
|
+
prompt_tokens=100, completion_tokens=100, total_tokens=200,
|
393
|
+
estimated_cost=0.2,
|
376
394
|
),
|
377
395
|
),
|
378
396
|
)
|
@@ -385,10 +403,12 @@ class OpenAITest(unittest.TestCase):
|
|
385
403
|
'Sample 0 for message.',
|
386
404
|
score=0.0,
|
387
405
|
logprobs=None,
|
406
|
+
is_cached=False,
|
388
407
|
usage=lf.LMSamplingUsage(
|
389
408
|
prompt_tokens=33,
|
390
409
|
completion_tokens=33,
|
391
|
-
total_tokens=66
|
410
|
+
total_tokens=66,
|
411
|
+
estimated_cost=0.2 / 3,
|
392
412
|
),
|
393
413
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
394
414
|
),
|
@@ -400,10 +420,12 @@ class OpenAITest(unittest.TestCase):
|
|
400
420
|
'Sample 1 for message.',
|
401
421
|
score=0.0,
|
402
422
|
logprobs=None,
|
423
|
+
is_cached=False,
|
403
424
|
usage=lf.LMSamplingUsage(
|
404
425
|
prompt_tokens=33,
|
405
426
|
completion_tokens=33,
|
406
|
-
total_tokens=66
|
427
|
+
total_tokens=66,
|
428
|
+
estimated_cost=0.2 / 3,
|
407
429
|
),
|
408
430
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
409
431
|
),
|
@@ -415,10 +437,12 @@ class OpenAITest(unittest.TestCase):
|
|
415
437
|
'Sample 2 for message.',
|
416
438
|
score=0.0,
|
417
439
|
logprobs=None,
|
440
|
+
is_cached=False,
|
418
441
|
usage=lf.LMSamplingUsage(
|
419
442
|
prompt_tokens=33,
|
420
443
|
completion_tokens=33,
|
421
|
-
total_tokens=66
|
444
|
+
total_tokens=66,
|
445
|
+
estimated_cost=0.2 / 3,
|
422
446
|
),
|
423
447
|
tags=[lf.Message.TAG_LM_RESPONSE],
|
424
448
|
),
|
@@ -427,7 +451,8 @@ class OpenAITest(unittest.TestCase):
|
|
427
451
|
),
|
428
452
|
],
|
429
453
|
usage=lf.LMSamplingUsage(
|
430
|
-
prompt_tokens=100, completion_tokens=100, total_tokens=200
|
454
|
+
prompt_tokens=100, completion_tokens=100, total_tokens=200,
|
455
|
+
estimated_cost=0.2,
|
431
456
|
),
|
432
457
|
),
|
433
458
|
)
|
@@ -449,6 +474,7 @@ class OpenAITest(unittest.TestCase):
|
|
449
474
|
'Sample 0 for prompt 0.',
|
450
475
|
score=0.0,
|
451
476
|
logprobs=None,
|
477
|
+
is_cached=False,
|
452
478
|
usage=lf.LMSamplingUsage(
|
453
479
|
prompt_tokens=50,
|
454
480
|
completion_tokens=50,
|
@@ -464,6 +490,7 @@ class OpenAITest(unittest.TestCase):
|
|
464
490
|
'Sample 1 for prompt 0.',
|
465
491
|
score=0.1,
|
466
492
|
logprobs=None,
|
493
|
+
is_cached=False,
|
467
494
|
usage=lf.LMSamplingUsage(
|
468
495
|
prompt_tokens=50,
|
469
496
|
completion_tokens=50,
|