langfun 0.1.2.dev202501160804__py3-none-any.whl → 0.1.2.dev202501170804__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.
@@ -30,6 +30,9 @@ from langfun.core.llms.compositional import RandomChoice
30
30
  # REST-based models.
31
31
  from langfun.core.llms.rest import REST
32
32
 
33
+ # VertexAI-based models.
34
+ from langfun.core.llms.vertexai import VertexAI
35
+
33
36
  # Gemini models.
34
37
  from langfun.core.llms.google_genai import GenAI
35
38
  from langfun.core.llms.google_genai import GeminiFlash2_0ThinkingExp_20241219
@@ -44,7 +47,7 @@ from langfun.core.llms.google_genai import GeminiFlash1_5_002
44
47
  from langfun.core.llms.google_genai import GeminiFlash1_5_001
45
48
  from langfun.core.llms.google_genai import GeminiPro1
46
49
 
47
- from langfun.core.llms.vertexai import VertexAI
50
+ from langfun.core.llms.vertexai import VertexAIGemini
48
51
  from langfun.core.llms.vertexai import VertexAIGeminiFlash2_0ThinkingExp_20241219
49
52
  from langfun.core.llms.vertexai import VertexAIGeminiFlash2_0Exp
50
53
  from langfun.core.llms.vertexai import VertexAIGeminiExp_20241206
@@ -114,6 +117,8 @@ from langfun.core.llms.openai import Gpt3Curie
114
117
  from langfun.core.llms.openai import Gpt3Babbage
115
118
  from langfun.core.llms.openai import Gpt3Ada
116
119
 
120
+ # Anthropic models.
121
+
117
122
  from langfun.core.llms.anthropic import Anthropic
118
123
  from langfun.core.llms.anthropic import Claude35Sonnet
119
124
  from langfun.core.llms.anthropic import Claude35Sonnet20241022
@@ -121,11 +126,14 @@ from langfun.core.llms.anthropic import Claude35Sonnet20240620
121
126
  from langfun.core.llms.anthropic import Claude3Opus
122
127
  from langfun.core.llms.anthropic import Claude3Sonnet
123
128
  from langfun.core.llms.anthropic import Claude3Haiku
124
- from langfun.core.llms.anthropic import VertexAIAnthropic
125
- from langfun.core.llms.anthropic import VertexAIClaude3_5_Sonnet_20241022
126
- from langfun.core.llms.anthropic import VertexAIClaude3_5_Sonnet_20240620
127
- from langfun.core.llms.anthropic import VertexAIClaude3_5_Haiku_20241022
128
- from langfun.core.llms.anthropic import VertexAIClaude3_Opus_20240229
129
+
130
+ from langfun.core.llms.vertexai import VertexAIAnthropic
131
+ from langfun.core.llms.vertexai import VertexAIClaude3_5_Sonnet_20241022
132
+ from langfun.core.llms.vertexai import VertexAIClaude3_5_Sonnet_20240620
133
+ from langfun.core.llms.vertexai import VertexAIClaude3_5_Haiku_20241022
134
+ from langfun.core.llms.vertexai import VertexAIClaude3_Opus_20240229
135
+
136
+ # Misc open source models.
129
137
 
130
138
  from langfun.core.llms.groq import Groq
131
139
  from langfun.core.llms.groq import GroqLlama3_2_3B
@@ -14,9 +14,8 @@
14
14
  """Language models from Anthropic."""
15
15
 
16
16
  import base64
17
- import functools
18
17
  import os
19
- from typing import Annotated, Any, Literal
18
+ from typing import Annotated, Any
20
19
 
21
20
  import langfun.core as lf
22
21
  from langfun.core import modalities as lf_modalities
@@ -24,20 +23,6 @@ from langfun.core.llms import rest
24
23
  import pyglove as pg
25
24
 
26
25
 
27
- try:
28
- # pylint: disable=g-import-not-at-top
29
- from google import auth as google_auth
30
- from google.auth import credentials as credentials_lib
31
- from google.auth.transport import requests as auth_requests
32
- Credentials = credentials_lib.Credentials
33
- # pylint: enable=g-import-not-at-top
34
- except ImportError:
35
- google_auth = None
36
- auth_requests = None
37
- credentials_lib = None
38
- Credentials = Any # pylint: disable=invalid-name
39
-
40
-
41
26
  SUPPORTED_MODELS_AND_SETTINGS = {
42
27
  # See https://docs.anthropic.com/claude/docs/models-overview
43
28
  # Rate limits from https://docs.anthropic.com/claude/reference/rate-limits
@@ -379,110 +364,3 @@ class Claude21(Anthropic):
379
364
  class ClaudeInstant(Anthropic):
380
365
  """Cheapest small and fast model, 100K context window."""
381
366
  model = 'claude-instant-1.2'
382
-
383
-
384
- #
385
- # Authropic models on VertexAI.
386
- #
387
-
388
-
389
- class VertexAIAnthropic(Anthropic):
390
- """Anthropic models on VertexAI."""
391
-
392
- project: Annotated[
393
- str | None,
394
- 'Google Cloud project ID.',
395
- ] = None
396
-
397
- location: Annotated[
398
- Literal['us-east5', 'europe-west1'],
399
- 'GCP location with Anthropic models hosted.'
400
- ] = 'us-east5'
401
-
402
- credentials: Annotated[
403
- Credentials | None, # pytype: disable=invalid-annotation
404
- (
405
- 'Credentials to use. If None, the default credentials '
406
- 'to the environment will be used.'
407
- ),
408
- ] = None
409
-
410
- api_version = 'vertex-2023-10-16'
411
-
412
- def _on_bound(self):
413
- super()._on_bound()
414
- if google_auth is None:
415
- raise ValueError(
416
- 'Please install "langfun[llm-google-vertex]" to use Vertex AI models.'
417
- )
418
- self._project = None
419
- self._credentials = None
420
-
421
- def _initialize(self):
422
- project = self.project or os.environ.get('VERTEXAI_PROJECT', None)
423
- if not project:
424
- raise ValueError(
425
- 'Please specify `project` during `__init__` or set environment '
426
- 'variable `VERTEXAI_PROJECT` with your Vertex AI project ID.'
427
- )
428
- self._project = project
429
- credentials = self.credentials
430
- if credentials is None:
431
- # Use default credentials.
432
- credentials = google_auth.default(
433
- scopes=['https://www.googleapis.com/auth/cloud-platform']
434
- )
435
- self._credentials = credentials
436
-
437
- @functools.cached_property
438
- def _session(self):
439
- assert self._api_initialized
440
- assert self._credentials is not None
441
- assert auth_requests is not None
442
- s = auth_requests.AuthorizedSession(self._credentials)
443
- s.headers.update(self.headers or {})
444
- return s
445
-
446
- @property
447
- def headers(self):
448
- return {
449
- 'Content-Type': 'application/json; charset=utf-8',
450
- }
451
-
452
- @property
453
- def api_endpoint(self) -> str:
454
- return (
455
- f'https://{self.location}-aiplatform.googleapis.com/v1/projects/'
456
- f'{self._project}/locations/{self.location}/publishers/anthropic/'
457
- f'models/{self.model}:streamRawPredict'
458
- )
459
-
460
- def request(
461
- self,
462
- prompt: lf.Message,
463
- sampling_options: lf.LMSamplingOptions
464
- ):
465
- request = super().request(prompt, sampling_options)
466
- request['anthropic_version'] = self.api_version
467
- del request['model']
468
- return request
469
-
470
-
471
- class VertexAIClaude3_Opus_20240229(VertexAIAnthropic): # pylint: disable=invalid-name
472
- """Anthropic's Claude 3 Opus model on VertexAI."""
473
- model = 'claude-3-opus@20240229'
474
-
475
-
476
- class VertexAIClaude3_5_Sonnet_20241022(VertexAIAnthropic): # pylint: disable=invalid-name
477
- """Anthropic's Claude 3.5 Sonnet model on VertexAI."""
478
- model = 'claude-3-5-sonnet-v2@20241022'
479
-
480
-
481
- class VertexAIClaude3_5_Sonnet_20240620(VertexAIAnthropic): # pylint: disable=invalid-name
482
- """Anthropic's Claude 3.5 Sonnet model on VertexAI."""
483
- model = 'claude-3-5-sonnet@20240620'
484
-
485
-
486
- class VertexAIClaude3_5_Haiku_20241022(VertexAIAnthropic): # pylint: disable=invalid-name
487
- """Anthropic's Claude 3.5 Haiku model on VertexAI."""
488
- model = 'claude-3-5-haiku@20241022'
@@ -19,9 +19,6 @@ from typing import Any
19
19
  import unittest
20
20
  from unittest import mock
21
21
 
22
- from google.auth import exceptions
23
- from langfun.core import language_model
24
- from langfun.core import message as lf_message
25
22
  from langfun.core import modalities as lf_modalities
26
23
  from langfun.core.llms import anthropic
27
24
  import pyglove as pg
@@ -186,50 +183,5 @@ class AnthropicTest(unittest.TestCase):
186
183
  lm('hello', max_attempts=1)
187
184
 
188
185
 
189
- class VertexAIAnthropicTest(unittest.TestCase):
190
- """Tests for VertexAI Anthropic models."""
191
-
192
- def test_basics(self):
193
- with self.assertRaisesRegex(ValueError, 'Please specify `project`'):
194
- lm = anthropic.VertexAIClaude3_5_Sonnet_20241022()
195
- lm('hi')
196
-
197
- model = anthropic.VertexAIClaude3_5_Sonnet_20241022(project='langfun')
198
-
199
- # NOTE(daiyip): For OSS users, default credentials are not available unless
200
- # users have already set up their GCP project. Therefore we ignore the
201
- # exception here.
202
- try:
203
- model._initialize()
204
- except exceptions.DefaultCredentialsError:
205
- pass
206
-
207
- self.assertEqual(
208
- model.api_endpoint,
209
- (
210
- 'https://us-east5-aiplatform.googleapis.com/v1/projects/'
211
- 'langfun/locations/us-east5/publishers/anthropic/'
212
- 'models/claude-3-5-sonnet-v2@20241022:streamRawPredict'
213
- )
214
- )
215
- request = model.request(
216
- lf_message.UserMessage('hi'),
217
- language_model.LMSamplingOptions(temperature=0.0),
218
- )
219
- self.assertEqual(
220
- request,
221
- {
222
- 'anthropic_version': 'vertex-2023-10-16',
223
- 'max_tokens': 8192,
224
- 'messages': [
225
- {'content': [{'text': 'hi', 'type': 'text'}], 'role': 'user'}
226
- ],
227
- 'stream': False,
228
- 'temperature': 0.0,
229
- 'top_k': 40,
230
- },
231
- )
232
-
233
-
234
186
  if __name__ == '__main__':
235
187
  unittest.main()
@@ -1,4 +1,4 @@
1
- # Copyright 2023 The Langfun Authors
1
+ # Copyright 2025 The Langfun Authors
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -15,10 +15,12 @@
15
15
 
16
16
  import functools
17
17
  import os
18
- from typing import Annotated, Any
18
+ from typing import Annotated, Any, Literal
19
19
 
20
20
  import langfun.core as lf
21
+ from langfun.core.llms import anthropic
21
22
  from langfun.core.llms import gemini
23
+ from langfun.core.llms import rest
22
24
  import pyglove as pg
23
25
 
24
26
  try:
@@ -36,10 +38,21 @@ except ImportError:
36
38
  Credentials = Any
37
39
 
38
40
 
39
- @lf.use_init_args(['model'])
40
- @pg.members([('api_endpoint', pg.typing.Str().freeze(''))])
41
- class VertexAI(gemini.Gemini):
42
- """Language model served on VertexAI with REST API."""
41
+ @pg.use_init_args(['api_endpoint'])
42
+ class VertexAI(rest.REST):
43
+ """Base class for VertexAI models.
44
+
45
+ This class handles the authentication of vertex AI models. Subclasses
46
+ should implement `request` and `result` methods, as well as the `api_endpoint`
47
+ property. Or let users to provide them as __init__ arguments.
48
+
49
+ Please check out VertexAIGemini in `gemini.py` as an example.
50
+ """
51
+
52
+ model: Annotated[
53
+ str | None,
54
+ 'Model ID.'
55
+ ] = None
43
56
 
44
57
  project: Annotated[
45
58
  str | None,
@@ -114,6 +127,17 @@ class VertexAI(gemini.Gemini):
114
127
  s.headers.update(self.headers or {})
115
128
  return s
116
129
 
130
+
131
+ #
132
+ # Gemini models served by Vertex AI.
133
+ #
134
+
135
+
136
+ @pg.use_init_args(['model'])
137
+ @pg.members([('api_endpoint', pg.typing.Str().freeze(''))])
138
+ class VertexAIGemini(VertexAI, gemini.Gemini):
139
+ """Gemini models served by Vertex AI.."""
140
+
117
141
  @property
118
142
  def api_endpoint(self) -> str:
119
143
  assert self._api_initialized
@@ -124,7 +148,7 @@ class VertexAI(gemini.Gemini):
124
148
  )
125
149
 
126
150
 
127
- class VertexAIGeminiFlash2_0ThinkingExp_20241219(VertexAI): # pylint: disable=invalid-name
151
+ class VertexAIGeminiFlash2_0ThinkingExp_20241219(VertexAIGemini): # pylint: disable=invalid-name
128
152
  """Vertex AI Gemini Flash 2.0 Thinking model launched on 12/19/2024."""
129
153
 
130
154
  api_version = 'v1alpha'
@@ -132,61 +156,128 @@ class VertexAIGeminiFlash2_0ThinkingExp_20241219(VertexAI): # pylint: disable=i
132
156
  timeout = None
133
157
 
134
158
 
135
- class VertexAIGeminiFlash2_0Exp(VertexAI): # pylint: disable=invalid-name
159
+ class VertexAIGeminiFlash2_0Exp(VertexAIGemini): # pylint: disable=invalid-name
136
160
  """Vertex AI Gemini 2.0 Flash model."""
137
161
 
138
162
  model = 'gemini-2.0-flash-exp'
139
163
 
140
164
 
141
- class VertexAIGeminiExp_20241206(VertexAI): # pylint: disable=invalid-name
165
+ class VertexAIGeminiExp_20241206(VertexAIGemini): # pylint: disable=invalid-name
142
166
  """Vertex AI Gemini Experimental model launched on 12/06/2024."""
143
167
 
144
168
  model = 'gemini-exp-1206'
145
169
 
146
170
 
147
- class VertexAIGeminiExp_20241114(VertexAI): # pylint: disable=invalid-name
171
+ class VertexAIGeminiExp_20241114(VertexAIGemini): # pylint: disable=invalid-name
148
172
  """Vertex AI Gemini Experimental model launched on 11/14/2024."""
149
173
 
150
174
  model = 'gemini-exp-1114'
151
175
 
152
176
 
153
- class VertexAIGeminiPro1_5(VertexAI): # pylint: disable=invalid-name
177
+ class VertexAIGeminiPro1_5(VertexAIGemini): # pylint: disable=invalid-name
154
178
  """Vertex AI Gemini 1.5 Pro model."""
155
179
 
156
180
  model = 'gemini-1.5-pro-latest'
157
181
 
158
182
 
159
- class VertexAIGeminiPro1_5_002(VertexAI): # pylint: disable=invalid-name
183
+ class VertexAIGeminiPro1_5_002(VertexAIGemini): # pylint: disable=invalid-name
160
184
  """Vertex AI Gemini 1.5 Pro model."""
161
185
 
162
186
  model = 'gemini-1.5-pro-002'
163
187
 
164
188
 
165
- class VertexAIGeminiPro1_5_001(VertexAI): # pylint: disable=invalid-name
189
+ class VertexAIGeminiPro1_5_001(VertexAIGemini): # pylint: disable=invalid-name
166
190
  """Vertex AI Gemini 1.5 Pro model."""
167
191
 
168
192
  model = 'gemini-1.5-pro-001'
169
193
 
170
194
 
171
- class VertexAIGeminiFlash1_5(VertexAI): # pylint: disable=invalid-name
195
+ class VertexAIGeminiFlash1_5(VertexAIGemini): # pylint: disable=invalid-name
172
196
  """Vertex AI Gemini 1.5 Flash model."""
173
197
 
174
198
  model = 'gemini-1.5-flash'
175
199
 
176
200
 
177
- class VertexAIGeminiFlash1_5_002(VertexAI): # pylint: disable=invalid-name
201
+ class VertexAIGeminiFlash1_5_002(VertexAIGemini): # pylint: disable=invalid-name
178
202
  """Vertex AI Gemini 1.5 Flash model."""
179
203
 
180
204
  model = 'gemini-1.5-flash-002'
181
205
 
182
206
 
183
- class VertexAIGeminiFlash1_5_001(VertexAI): # pylint: disable=invalid-name
207
+ class VertexAIGeminiFlash1_5_001(VertexAIGemini): # pylint: disable=invalid-name
184
208
  """Vertex AI Gemini 1.5 Flash model."""
185
209
 
186
210
  model = 'gemini-1.5-flash-001'
187
211
 
188
212
 
189
- class VertexAIGeminiPro1(VertexAI): # pylint: disable=invalid-name
213
+ class VertexAIGeminiPro1(VertexAIGemini): # pylint: disable=invalid-name
190
214
  """Vertex AI Gemini 1.0 Pro model."""
191
215
 
192
216
  model = 'gemini-1.0-pro'
217
+
218
+
219
+ #
220
+ # Anthropic models on Vertex AI.
221
+ #
222
+
223
+
224
+ @pg.use_init_args(['model'])
225
+ @pg.members([('api_endpoint', pg.typing.Str().freeze(''))])
226
+ class VertexAIAnthropic(VertexAI, anthropic.Anthropic):
227
+ """Anthropic models on VertexAI."""
228
+
229
+ location: Annotated[
230
+ Literal['us-east5', 'europe-west1'],
231
+ 'GCP location with Anthropic models hosted.'
232
+ ] = 'us-east5'
233
+
234
+ api_version = 'vertex-2023-10-16'
235
+
236
+ @property
237
+ def headers(self):
238
+ return {
239
+ 'Content-Type': 'application/json; charset=utf-8',
240
+ }
241
+
242
+ @property
243
+ def api_endpoint(self) -> str:
244
+ return (
245
+ f'https://{self.location}-aiplatform.googleapis.com/v1/projects/'
246
+ f'{self._project}/locations/{self.location}/publishers/anthropic/'
247
+ f'models/{self.model}:streamRawPredict'
248
+ )
249
+
250
+ def request(
251
+ self,
252
+ prompt: lf.Message,
253
+ sampling_options: lf.LMSamplingOptions
254
+ ):
255
+ request = super().request(prompt, sampling_options)
256
+ request['anthropic_version'] = self.api_version
257
+ del request['model']
258
+ return request
259
+
260
+
261
+ # pylint: disable=invalid-name
262
+
263
+
264
+ class VertexAIClaude3_Opus_20240229(VertexAIAnthropic):
265
+ """Anthropic's Claude 3 Opus model on VertexAI."""
266
+ model = 'claude-3-opus@20240229'
267
+
268
+
269
+ class VertexAIClaude3_5_Sonnet_20241022(VertexAIAnthropic):
270
+ """Anthropic's Claude 3.5 Sonnet model on VertexAI."""
271
+ model = 'claude-3-5-sonnet-v2@20241022'
272
+
273
+
274
+ class VertexAIClaude3_5_Sonnet_20240620(VertexAIAnthropic):
275
+ """Anthropic's Claude 3.5 Sonnet model on VertexAI."""
276
+ model = 'claude-3-5-sonnet@20240620'
277
+
278
+
279
+ class VertexAIClaude3_5_Haiku_20241022(VertexAIAnthropic):
280
+ """Anthropic's Claude 3.5 Haiku model on VertexAI."""
281
+ model = 'claude-3-5-haiku@20241022'
282
+
283
+ # pylint: enable=invalid-name
@@ -17,6 +17,8 @@ import os
17
17
  import unittest
18
18
  from unittest import mock
19
19
 
20
+ from google.auth import exceptions
21
+ import langfun.core as lf
20
22
  from langfun.core.llms import vertexai
21
23
 
22
24
 
@@ -48,5 +50,55 @@ class VertexAITest(unittest.TestCase):
48
50
  del os.environ['VERTEXAI_LOCATION']
49
51
 
50
52
 
53
+ class VertexAIAnthropicTest(unittest.TestCase):
54
+ """Tests for VertexAI Anthropic models."""
55
+
56
+ def test_basics(self):
57
+ with self.assertRaisesRegex(ValueError, 'Please specify `project`'):
58
+ lm = vertexai.VertexAIClaude3_5_Sonnet_20241022()
59
+ lm('hi')
60
+
61
+ model = vertexai.VertexAIClaude3_5_Sonnet_20241022(project='langfun')
62
+
63
+ # NOTE(daiyip): For OSS users, default credentials are not available unless
64
+ # users have already set up their GCP project. Therefore we ignore the
65
+ # exception here.
66
+ try:
67
+ model._initialize()
68
+ except exceptions.DefaultCredentialsError:
69
+ pass
70
+
71
+ self.assertEqual(
72
+ model.api_endpoint,
73
+ (
74
+ 'https://us-east5-aiplatform.googleapis.com/v1/projects/'
75
+ 'langfun/locations/us-east5/publishers/anthropic/'
76
+ 'models/claude-3-5-sonnet-v2@20241022:streamRawPredict'
77
+ )
78
+ )
79
+ self.assertEqual(
80
+ model.headers,
81
+ {
82
+ 'Content-Type': 'application/json; charset=utf-8',
83
+ },
84
+ )
85
+ request = model.request(
86
+ lf.UserMessage('hi'), lf.LMSamplingOptions(temperature=0.0),
87
+ )
88
+ self.assertEqual(
89
+ request,
90
+ {
91
+ 'anthropic_version': 'vertex-2023-10-16',
92
+ 'max_tokens': 8192,
93
+ 'messages': [
94
+ {'content': [{'text': 'hi', 'type': 'text'}], 'role': 'user'}
95
+ ],
96
+ 'stream': False,
97
+ 'temperature': 0.0,
98
+ 'top_k': 40,
99
+ },
100
+ )
101
+
102
+
51
103
  if __name__ == '__main__':
52
104
  unittest.main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: langfun
3
- Version: 0.1.2.dev202501160804
3
+ Version: 0.1.2.dev202501170804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -71,9 +71,9 @@ langfun/core/eval/v2/reporting.py,sha256=QOp5jX761Esvi5w_UIRLDqPY_XRO6ru02-DOrdq
71
71
  langfun/core/eval/v2/reporting_test.py,sha256=UmYSAQvD3AIXsSyWQ-WD2uLtEISYpmBeoKY5u5Qwc8E,5696
72
72
  langfun/core/eval/v2/runners.py,sha256=DKEmSlGXjOXKWFdBhTpLy7tMsBHZHd1Brl3hWIngsSQ,15931
73
73
  langfun/core/eval/v2/runners_test.py,sha256=A37fKK2MvAVTiShsg_laluJzJ9AuAQn52k7HPbfD0Ks,11666
74
- langfun/core/llms/__init__.py,sha256=Ntr0kvHc17VEZ5EV9fCoYY1kzRvQxCoZrtDRYNiMWCs,6742
75
- langfun/core/llms/anthropic.py,sha256=a5MmnFsBA0CbfvwzXT1v_0fqLRMrhUNdh1tx6469PQ4,14357
76
- langfun/core/llms/anthropic_test.py,sha256=-2U4kc_pgBM7wqxu8RuxzyHPGww1EAWqKUvN4PW8Btw,8058
74
+ langfun/core/llms/__init__.py,sha256=wA6t_E3peTYTjsW6uOHnOs9wjQ_Tj1WYlhVVLk2Sjcg,6867
75
+ langfun/core/llms/anthropic.py,sha256=z_DWDpR1VKNzv6wq-9CXLzWdqCDXRKuVFacJNpgBqAs,10826
76
+ langfun/core/llms/anthropic_test.py,sha256=zZ2eSP8hhVv-RDSWxT7wX-NS5DfGfQmCjS9P0pusAHM,6556
77
77
  langfun/core/llms/compositional.py,sha256=csW_FLlgL-tpeyCOTVvfUQkMa_zCN5Y2I-YbSNuK27U,2872
78
78
  langfun/core/llms/compositional_test.py,sha256=4eTnOer-DncRKGaIJW2ZQQMLnt5r2R0UIx_DYOvGAQo,2027
79
79
  langfun/core/llms/deepseek.py,sha256=Y7DlLUWrukbPVyBMesppd-m75Q-PxD0b3KnMKaoY_8I,3744
@@ -94,8 +94,8 @@ langfun/core/llms/openai_compatible_test.py,sha256=0uFYhCiuHo2Wrlgj16-GRG6rW8P6E
94
94
  langfun/core/llms/openai_test.py,sha256=m85YjGCvWvV5ZYagjC0FqI0FcqyCEVCbUUs8Wm3iUrc,2475
95
95
  langfun/core/llms/rest.py,sha256=sWbYUV8S3SuOg9giq7xwD-xDRfaF7NP_ig7bI52-Rj4,3442
96
96
  langfun/core/llms/rest_test.py,sha256=zWGiI08f9gXsoQPJS9TlX1zD2uQLrJUB-1VpAJXRHfs,3475
97
- langfun/core/llms/vertexai.py,sha256=MuwLPTJ6-9x2uRDCSM1_biPK6M76FFlL1ezf5OmobDA,5504
98
- langfun/core/llms/vertexai_test.py,sha256=iXjmQs7TNiwcueoaRGpdp4KnASkDJaTP__Z9QroN8zQ,1787
97
+ langfun/core/llms/vertexai.py,sha256=JV9iHsCM3Ee-4nE1ENNkTXIYGxjCHxrEeir175YpCM8,7869
98
+ langfun/core/llms/vertexai_test.py,sha256=6eLQOyeL5iGZOIWb39sFcf1TgYD_6TBGYdMO4UIvhf4,3333
99
99
  langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
100
100
  langfun/core/llms/cache/base.py,sha256=rt3zwmyw0y9jsSGW-ZbV1vAfLxQ7_3AVk0l2EySlse4,3918
101
101
  langfun/core/llms/cache/in_memory.py,sha256=i58oiQL28RDsq37dwqgVpC2mBETJjIEFS20yHiV5MKU,5185
@@ -146,8 +146,8 @@ langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fik
146
146
  langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
147
147
  langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
148
148
  langfun/core/templates/selfplay_test.py,sha256=Ot__1P1M8oJfoTp-M9-PQ6HUXqZKyMwvZ5f7yQ3yfyM,2326
149
- langfun-0.1.2.dev202501160804.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
150
- langfun-0.1.2.dev202501160804.dist-info/METADATA,sha256=_XM3ancZIb8-33gpRxLKmdJOBZsMfd1_2-4otzha19Q,8172
151
- langfun-0.1.2.dev202501160804.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
152
- langfun-0.1.2.dev202501160804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
153
- langfun-0.1.2.dev202501160804.dist-info/RECORD,,
149
+ langfun-0.1.2.dev202501170804.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
150
+ langfun-0.1.2.dev202501170804.dist-info/METADATA,sha256=X3MDNl6D6StuwltvUclYhE20uKNQ2x8lY3CkPggJyI4,8172
151
+ langfun-0.1.2.dev202501170804.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
152
+ langfun-0.1.2.dev202501170804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
153
+ langfun-0.1.2.dev202501170804.dist-info/RECORD,,