langfun 0.1.2.dev202511160804__py3-none-any.whl → 0.1.2.dev202511270805__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.
Potentially problematic release.
This version of langfun might be problematic. Click here for more details.
- langfun/core/__init__.py +1 -0
- langfun/core/agentic/__init__.py +4 -1
- langfun/core/agentic/action.py +340 -17
- langfun/core/agentic/action_test.py +124 -21
- langfun/core/eval/base_test.py +5 -5
- langfun/core/eval/v2/checkpointing.py +25 -1
- langfun/core/eval/v2/checkpointing_test.py +8 -1
- langfun/core/eval/v2/eval_test_helper.py +7 -2
- langfun/core/eval/v2/evaluation.py +4 -1
- langfun/core/eval/v2/example.py +5 -1
- langfun/core/eval/v2/example_test.py +13 -5
- langfun/core/eval/v2/experiment.py +23 -0
- langfun/core/eval/v2/experiment_test.py +19 -0
- langfun/core/eval/v2/progress_tracking.py +12 -3
- langfun/core/eval/v2/progress_tracking_test.py +3 -1
- langfun/core/eval/v2/reporting_test.py +4 -0
- langfun/core/eval/v2/runners/__init__.py +4 -0
- langfun/core/eval/v2/runners/base.py +40 -21
- langfun/core/eval/v2/runners/beam.py +341 -0
- langfun/core/eval/v2/runners/beam_test.py +131 -0
- langfun/core/eval/v2/runners/ckpt_monitor.py +294 -0
- langfun/core/eval/v2/runners/ckpt_monitor_test.py +162 -0
- langfun/core/eval/v2/runners/debug_test.py +1 -4
- langfun/core/eval/v2/runners/parallel_test.py +1 -4
- langfun/core/eval/v2/runners/sequential_test.py +1 -4
- langfun/core/langfunc_test.py +3 -3
- langfun/core/language_model.py +38 -5
- langfun/core/language_model_test.py +45 -0
- langfun/core/llms/__init__.py +2 -0
- langfun/core/llms/gemini.py +41 -8
- langfun/core/llms/gemini_test.py +84 -0
- langfun/core/llms/google_genai.py +5 -0
- langfun/core/llms/vertexai.py +7 -0
- langfun/core/modalities/mime.py +2 -0
- langfun/core/modalities/mime_test.py +11 -0
- langfun/core/structured/schema/__init__.py +1 -0
- {langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/METADATA +1 -1
- {langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/RECORD +41 -37
- {langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/WHEEL +0 -0
- {langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/licenses/LICENSE +0 -0
- {langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/top_level.txt +0 -0
langfun/core/llms/gemini.py
CHANGED
|
@@ -151,6 +151,32 @@ SUPPORTED_MODELS = [
|
|
|
151
151
|
#
|
|
152
152
|
# Production models.
|
|
153
153
|
#
|
|
154
|
+
# Gemini 3 Pro Preview
|
|
155
|
+
GeminiModelInfo(
|
|
156
|
+
model_id='gemini-3-pro-preview',
|
|
157
|
+
in_service=True,
|
|
158
|
+
provider=pg.oneof(['Google GenAI', 'VertexAI']),
|
|
159
|
+
model_type='instruction-tuned',
|
|
160
|
+
description='Gemini 3 Pro Preview.',
|
|
161
|
+
release_date=datetime.datetime(2025, 11, 18),
|
|
162
|
+
input_modalities=GeminiModelInfo.ALL_SUPPORTED_INPUT_TYPES,
|
|
163
|
+
context_length=lf.ModelInfo.ContextLength(
|
|
164
|
+
max_input_tokens=1_048_576,
|
|
165
|
+
max_output_tokens=65_536,
|
|
166
|
+
),
|
|
167
|
+
pricing=GeminiModelInfo.Pricing(
|
|
168
|
+
cost_per_1m_cached_input_tokens=0.2,
|
|
169
|
+
cost_per_1m_input_tokens=2.0,
|
|
170
|
+
cost_per_1m_output_tokens=12.0,
|
|
171
|
+
cost_per_1m_cached_input_tokens_with_prompt_longer_than_128k=0.4,
|
|
172
|
+
cost_per_1m_input_tokens_with_prompt_longer_than_128k=4.0,
|
|
173
|
+
cost_per_1m_output_tokens_with_prompt_longer_than_128k=18.0,
|
|
174
|
+
),
|
|
175
|
+
rate_limits=lf.ModelInfo.RateLimits(
|
|
176
|
+
max_requests_per_minute=2000,
|
|
177
|
+
max_tokens_per_minute=4_000_000,
|
|
178
|
+
),
|
|
179
|
+
),
|
|
154
180
|
# Gemini 2.5 Flash
|
|
155
181
|
GeminiModelInfo(
|
|
156
182
|
model_id='gemini-2.5-flash',
|
|
@@ -793,11 +819,14 @@ class Gemini(rest.REST):
|
|
|
793
819
|
+ '\n\n [RESPONSE FORMAT (not part of prompt)]\n'
|
|
794
820
|
+ pg.to_json_str(json_schema, json_indent=2)
|
|
795
821
|
)
|
|
822
|
+
thinking_config_data = {}
|
|
796
823
|
if options.max_thinking_tokens is not None:
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
824
|
+
thinking_config_data['includeThoughts'] = options.max_thinking_tokens > 0
|
|
825
|
+
thinking_config_data['thinkingBudget'] = options.max_thinking_tokens
|
|
826
|
+
if options.thinking_level is not None:
|
|
827
|
+
thinking_config_data['thinkingLevel'] = options.thinking_level
|
|
828
|
+
if thinking_config_data:
|
|
829
|
+
config['thinkingConfig'] = thinking_config_data
|
|
801
830
|
|
|
802
831
|
if self.response_modalities:
|
|
803
832
|
config['responseModalities'] = self.response_modalities
|
|
@@ -813,10 +842,14 @@ class Gemini(rest.REST):
|
|
|
813
842
|
'No candidates found in response. This is a Gemini API issue that '
|
|
814
843
|
'happens occasionally, and retrying should fix it. '
|
|
815
844
|
)
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
845
|
+
|
|
846
|
+
messages = []
|
|
847
|
+
for candidate in candidates:
|
|
848
|
+
message = lf.Message.from_value(candidate['content'], format='gemini')
|
|
849
|
+
if finish_reason := candidate.get('finishReason'):
|
|
850
|
+
message.metadata['finish_reason'] = finish_reason
|
|
851
|
+
messages.append(message)
|
|
852
|
+
|
|
820
853
|
usage = json['usageMetadata']
|
|
821
854
|
input_tokens = usage['promptTokenCount']
|
|
822
855
|
# NOTE(daiyip): We saw cases that `candidatesTokenCount` is not present.
|
langfun/core/llms/gemini_test.py
CHANGED
|
@@ -177,6 +177,58 @@ class GeminiTest(unittest.TestCase):
|
|
|
177
177
|
),
|
|
178
178
|
)
|
|
179
179
|
|
|
180
|
+
# Add test for thinkingConfig with thinking_level.
|
|
181
|
+
actual = model._generation_config(
|
|
182
|
+
lf.UserMessage('hi'),
|
|
183
|
+
lf.LMSamplingOptions(
|
|
184
|
+
thinking_level='high',
|
|
185
|
+
),
|
|
186
|
+
)
|
|
187
|
+
self.assertEqual(
|
|
188
|
+
actual,
|
|
189
|
+
dict(
|
|
190
|
+
candidateCount=1,
|
|
191
|
+
temperature=None,
|
|
192
|
+
topP=None,
|
|
193
|
+
topK=40,
|
|
194
|
+
maxOutputTokens=None,
|
|
195
|
+
stopSequences=None,
|
|
196
|
+
responseLogprobs=False,
|
|
197
|
+
logprobs=None,
|
|
198
|
+
seed=None,
|
|
199
|
+
thinkingConfig={'thinkingLevel': 'high'},
|
|
200
|
+
),
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
# Add test for thinkingConfig with both max_thinking_tokens and
|
|
204
|
+
# thinking_level.
|
|
205
|
+
actual = model._generation_config(
|
|
206
|
+
lf.UserMessage('hi'),
|
|
207
|
+
lf.LMSamplingOptions(
|
|
208
|
+
max_thinking_tokens=100,
|
|
209
|
+
thinking_level='low',
|
|
210
|
+
),
|
|
211
|
+
)
|
|
212
|
+
self.assertEqual(
|
|
213
|
+
actual,
|
|
214
|
+
dict(
|
|
215
|
+
candidateCount=1,
|
|
216
|
+
temperature=None,
|
|
217
|
+
topP=None,
|
|
218
|
+
topK=40,
|
|
219
|
+
maxOutputTokens=None,
|
|
220
|
+
stopSequences=None,
|
|
221
|
+
responseLogprobs=False,
|
|
222
|
+
logprobs=None,
|
|
223
|
+
seed=None,
|
|
224
|
+
thinkingConfig={
|
|
225
|
+
'includeThoughts': True,
|
|
226
|
+
'thinkingBudget': 100,
|
|
227
|
+
'thinkingLevel': 'low',
|
|
228
|
+
},
|
|
229
|
+
),
|
|
230
|
+
)
|
|
231
|
+
|
|
180
232
|
with self.assertRaisesRegex(
|
|
181
233
|
ValueError, '`json_schema` must be a dict, got'
|
|
182
234
|
):
|
|
@@ -225,6 +277,38 @@ class GeminiTest(unittest.TestCase):
|
|
|
225
277
|
):
|
|
226
278
|
lm('hello')
|
|
227
279
|
|
|
280
|
+
def test_call_model_with_max_tokens_error(self):
|
|
281
|
+
def mock_requests_post_error(*args, **kwargs):
|
|
282
|
+
del args, kwargs
|
|
283
|
+
response = requests.Response()
|
|
284
|
+
response.status_code = 200
|
|
285
|
+
response._content = pg.to_json_str({
|
|
286
|
+
'candidates': [
|
|
287
|
+
{
|
|
288
|
+
'finishReason': 'MAX_TOKENS',
|
|
289
|
+
'content': {
|
|
290
|
+
'parts': [
|
|
291
|
+
{
|
|
292
|
+
'text': 'This is'
|
|
293
|
+
}
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
'usageMetadata': {
|
|
299
|
+
'promptTokenCount': 3,
|
|
300
|
+
'candidatesTokenCount': 4,
|
|
301
|
+
}
|
|
302
|
+
}).encode()
|
|
303
|
+
return response
|
|
304
|
+
|
|
305
|
+
with mock.patch('requests.Session.post') as mock_generate:
|
|
306
|
+
mock_generate.side_effect = mock_requests_post_error
|
|
307
|
+
lm = gemini.Gemini('gemini-1.5-pro', api_endpoint='')
|
|
308
|
+
m = lm('hello')
|
|
309
|
+
self.assertEqual(m.metadata.finish_reason, 'MAX_TOKENS')
|
|
310
|
+
self.assertEqual(m.text, 'This is')
|
|
311
|
+
|
|
228
312
|
def test_call_model_with_system_message(self):
|
|
229
313
|
with mock.patch('requests.Session.post') as mock_generate:
|
|
230
314
|
mock_generate.side_effect = mock_requests_post
|
|
@@ -115,9 +115,14 @@ class GenAI(gemini.Gemini):
|
|
|
115
115
|
|
|
116
116
|
# pylint: disable=invalid-name
|
|
117
117
|
|
|
118
|
+
|
|
118
119
|
#
|
|
119
120
|
# Experimental models.
|
|
120
121
|
#
|
|
122
|
+
class Gemini3ProPreview(GenAI):
|
|
123
|
+
"""Gemini 3 Pro Preview model."""
|
|
124
|
+
|
|
125
|
+
model = 'gemini-3-pro-preview'
|
|
121
126
|
|
|
122
127
|
|
|
123
128
|
class Gemini25FlashImagePreview(GenAI):
|
langfun/core/llms/vertexai.py
CHANGED
|
@@ -213,6 +213,13 @@ class VertexAIGemini(VertexAI, gemini.Gemini):
|
|
|
213
213
|
#
|
|
214
214
|
# Production models.
|
|
215
215
|
#
|
|
216
|
+
class VertexAIGemini3ProPreview(VertexAIGemini): # pylint: disable=invalid-name
|
|
217
|
+
"""Gemini 3 Pro Preview model launched on 11/18/2025."""
|
|
218
|
+
|
|
219
|
+
model = 'gemini-3-pro-preview'
|
|
220
|
+
location = 'global'
|
|
221
|
+
|
|
222
|
+
|
|
216
223
|
class VertexAIGemini25Pro(VertexAIGemini): # pylint: disable=invalid-name
|
|
217
224
|
"""Gemini 2.5 Pro GA model launched on 06/17/2025."""
|
|
218
225
|
|
langfun/core/modalities/mime.py
CHANGED
|
@@ -204,6 +204,8 @@ class Mime(lf.Modality):
|
|
|
204
204
|
return cls.class_from_mime_type(mime_type).from_bytes(content, **kwargs)
|
|
205
205
|
|
|
206
206
|
if cls is Mime:
|
|
207
|
+
if 'youtube.com/watch' in uri:
|
|
208
|
+
return Custom(mime='text/html', uri=uri, **kwargs)
|
|
207
209
|
content = cls.download(uri)
|
|
208
210
|
mime = _detect_mime_type(content)
|
|
209
211
|
return cls.class_from_mime_type(mime)(uri=uri, content=content, **kwargs)
|
|
@@ -109,6 +109,17 @@ class CustomMimeTest(unittest.TestCase):
|
|
|
109
109
|
with self.assertRaisesRegex(ValueError, 'Unsupported encoding'):
|
|
110
110
|
mime.Mime.from_uri('data:text/plain;base16,abcd')
|
|
111
111
|
|
|
112
|
+
# Test YouTube URI
|
|
113
|
+
yt_uri = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
|
|
114
|
+
with mock.patch(
|
|
115
|
+
'langfun.core.modalities.mime.Mime.download'
|
|
116
|
+
) as mock_download:
|
|
117
|
+
content = mime.Mime.from_uri(yt_uri)
|
|
118
|
+
self.assertIsInstance(content, mime.Custom)
|
|
119
|
+
self.assertEqual(content.mime_type, 'text/html')
|
|
120
|
+
self.assertEqual(content.uri, yt_uri)
|
|
121
|
+
mock_download.assert_not_called()
|
|
122
|
+
|
|
112
123
|
def assert_html_content(self, html, expected):
|
|
113
124
|
expected = inspect.cleandoc(expected).strip()
|
|
114
125
|
actual = html.content.strip()
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
# pylint: disable=g-importing-member
|
|
18
18
|
from langfun.core.structured.schema.base import Schema
|
|
19
19
|
from langfun.core.structured.schema.base import SchemaError
|
|
20
|
+
from langfun.core.structured.schema.base import SchemaType
|
|
20
21
|
|
|
21
22
|
from langfun.core.structured.schema.base import class_dependencies
|
|
22
23
|
from langfun.core.structured.schema.base import schema_spec
|
|
@@ -6,7 +6,7 @@ langfun/assistant/capabilities/gui/drawing.py,sha256=8wgol61P7HovLg5EaevRmDPXTFu
|
|
|
6
6
|
langfun/assistant/capabilities/gui/drawing_test.py,sha256=d6LQ1ctG78YRi58UVBdndwyEqTC_ITdk191oA3tASxM,3421
|
|
7
7
|
langfun/assistant/capabilities/gui/location.py,sha256=QYJlY5kUNEwiZFiPYRyFAO7bD2ez4jL5hYn1_AK1ulc,8643
|
|
8
8
|
langfun/assistant/capabilities/gui/location_test.py,sha256=pQUOH1sKuAwjTTYKu615RUnecc_lNrddfvkyxf9297w,9051
|
|
9
|
-
langfun/core/__init__.py,sha256
|
|
9
|
+
langfun/core/__init__.py,sha256=HeTypJn85zOOzRb8hiIoC1vOE69xKtvUSz7TmeogLQo,5117
|
|
10
10
|
langfun/core/async_support.py,sha256=TZA5toE-dEm7NvmggvsE7dPUGF9SG6_nXdyVPLTXMzs,4142
|
|
11
11
|
langfun/core/async_support_test.py,sha256=fMz1ulGrfUCuHp7RtYktuBwpbRN3kCBKnB4LFvaXSAA,1754
|
|
12
12
|
langfun/core/component.py,sha256=OApzlPc3jOsYJdW29SBNs9D5NMFItf-cGWv8hLbogy4,3866
|
|
@@ -16,9 +16,9 @@ langfun/core/concurrent_test.py,sha256=Da4oqfu_YWH-B8H2Bv6e8tWIkR0ubkW40bccQ3N1m
|
|
|
16
16
|
langfun/core/console.py,sha256=g3jczlZoMpIcbYyMB4cSoEHEGg5OxzQLMqAR-u8RSgE,2684
|
|
17
17
|
langfun/core/console_test.py,sha256=pBOcuNMJdVELywvroptfcRtJMsegMm3wSlHAL2TdxVk,1679
|
|
18
18
|
langfun/core/langfunc.py,sha256=bqYwgjAl56k7v1TLe2LrOj_cdfJ-9WQbbXPcW_f0a_c,8628
|
|
19
|
-
langfun/core/langfunc_test.py,sha256=
|
|
20
|
-
langfun/core/language_model.py,sha256=
|
|
21
|
-
langfun/core/language_model_test.py,sha256
|
|
19
|
+
langfun/core/langfunc_test.py,sha256=QDtGA5pa2qt9F3YbXZs6jSpvU98PxvqezGvzFNc27NI,8982
|
|
20
|
+
langfun/core/language_model.py,sha256=TLrhJE4902YcUKDQsuuUxIFobVfSIQJunJh-QGTUvSk,55883
|
|
21
|
+
langfun/core/language_model_test.py,sha256=-1qjrgafNXa2WbicmqJyP-G8Ev-9ZmlFuE375foiWzM,40165
|
|
22
22
|
langfun/core/logging.py,sha256=xUmEsKLNmeZLZd3Ar8ROdv7kK2GjOkuEAgKRcAyo0AM,9138
|
|
23
23
|
langfun/core/logging_test.py,sha256=vbVGOQxwMmVSiFfbt2897gUt-8nqDpV64jCAeUG_q5U,6924
|
|
24
24
|
langfun/core/memory.py,sha256=tTZ7hWcFGG4Rl0SsWb7_82L1w-V46sA9BiOaDBUCaVI,2099
|
|
@@ -34,11 +34,11 @@ langfun/core/subscription.py,sha256=1VzAX6aaESy0l8B5luNTcOqGRwAFNmA6jG_nLSfFDLI,
|
|
|
34
34
|
langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIcArBo,8717
|
|
35
35
|
langfun/core/template.py,sha256=KIRLEhijPf5UP5auJKf9x6HKKW2E1Ki83Dcs9W8eKs8,29571
|
|
36
36
|
langfun/core/template_test.py,sha256=K7gx1CsDlau2CCvrE4BeKV26n0GyovhbsadWf8pDMek,20400
|
|
37
|
-
langfun/core/agentic/__init__.py,sha256=
|
|
38
|
-
langfun/core/agentic/action.py,sha256=
|
|
37
|
+
langfun/core/agentic/__init__.py,sha256=ajI1SGcQWXfBp2MFH13Fr9OkSN4slSKDlJSHPDp4P_c,1573
|
|
38
|
+
langfun/core/agentic/action.py,sha256=mgRUU6_dQVntZP3OmCoQCbrnNRHA_KVnOcKSy9GCQQM,72375
|
|
39
39
|
langfun/core/agentic/action_eval.py,sha256=Mjk5QBFInjIK3VlDR2RT__pugmtAW-iv-SMtH5GMcNo,5258
|
|
40
40
|
langfun/core/agentic/action_eval_test.py,sha256=7AkOwNbUX-ZgR1R0a7bvUZ5abNTUV7blf_8Mnrwb-II,2811
|
|
41
|
-
langfun/core/agentic/action_test.py,sha256=
|
|
41
|
+
langfun/core/agentic/action_test.py,sha256=sKaU8IZ9whgBeV7oMB-0s8TdQ6PqDkI_eT9Yw3EZSYU,24123
|
|
42
42
|
langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
|
|
43
43
|
langfun/core/coding/python/__init__.py,sha256=yTXm92oLpQb4A-fZ2qy-bzfhPYND7B-oidtbv1PNaX0,1678
|
|
44
44
|
langfun/core/coding/python/correction.py,sha256=KbIJMNLmBv6QHEx8ja_ZweIqffzF95FdEssahy4AFhI,7702
|
|
@@ -61,7 +61,7 @@ langfun/core/data/conversion/openai.py,sha256=P_HPlS9DIH6s-LTVq9I-UM_GGKSK9ZsPgi
|
|
|
61
61
|
langfun/core/data/conversion/openai_test.py,sha256=7OrB_i4HF2zUxkdeFp35p4pyzwnpY6uN-ACIqrPgUVI,9835
|
|
62
62
|
langfun/core/eval/__init__.py,sha256=OEXr1ZRuvLuhJJfuQ1ZWQ-SvYzjyrtiAAEogYaB7E6o,1933
|
|
63
63
|
langfun/core/eval/base.py,sha256=A7jMpvvEej37GAnVWjt9FLP2Yiuuac0AP9GjzDSZDRs,76158
|
|
64
|
-
langfun/core/eval/base_test.py,sha256=
|
|
64
|
+
langfun/core/eval/base_test.py,sha256=yiZARvXldmIdpAj0hD_FM5D40DEZuYvwhnEM-x5kjso,27197
|
|
65
65
|
langfun/core/eval/matching.py,sha256=IXih9N3tvLuF1EmdmqldLBR0kyQsXuh2dOz2J3RC12E,9458
|
|
66
66
|
langfun/core/eval/matching_test.py,sha256=2xtwsTi-UzLTt0QnXl3u_eAG3fFjCG2tsae7YkcQTB0,5312
|
|
67
67
|
langfun/core/eval/patching.py,sha256=wJqqML_z_hXQQ65f9oJpdtiNEkUvwWWdNgGiIcV1Jq4,3871
|
|
@@ -69,34 +69,38 @@ langfun/core/eval/patching_test.py,sha256=8kCd54Egjju22FMgtJuxEsrXkW8ifs-UUBHtrC
|
|
|
69
69
|
langfun/core/eval/scoring.py,sha256=1C7e7gR8Wai7M9oBXRZifntxy5HEik5qjVo9gY8B7KI,6423
|
|
70
70
|
langfun/core/eval/scoring_test.py,sha256=UcBH0R6vAovZ0A4yM22s5cBHL1qVKASubrbu1t8dYBw,4529
|
|
71
71
|
langfun/core/eval/v2/__init__.py,sha256=qYF7AN3K4fDV6pB4uMiCrAYZaAR6R_VX1EVSAeFJopg,1790
|
|
72
|
-
langfun/core/eval/v2/checkpointing.py,sha256=
|
|
73
|
-
langfun/core/eval/v2/checkpointing_test.py,sha256=
|
|
74
|
-
langfun/core/eval/v2/eval_test_helper.py,sha256=
|
|
75
|
-
langfun/core/eval/v2/evaluation.py,sha256=
|
|
72
|
+
langfun/core/eval/v2/checkpointing.py,sha256=f7PH7Zbu3IQBSq6x2CIMiD_w6oHcC1kE_weopoJIZx4,13838
|
|
73
|
+
langfun/core/eval/v2/checkpointing_test.py,sha256=s_E94dOPNO1zYzXyQI37wvCF3suez-r4Nls9popN58w,9787
|
|
74
|
+
langfun/core/eval/v2/eval_test_helper.py,sha256=baew3-cqomy1p7mF1_Xw7AvEWUwCimi3J7-8Ay3eEPo,6539
|
|
75
|
+
langfun/core/eval/v2/evaluation.py,sha256=A_5go1bsZuSfkLueo24jmIf4Tao2rfW-VPE2x1onG8U,30456
|
|
76
76
|
langfun/core/eval/v2/evaluation_test.py,sha256=gurFzSfPECZ_FMQOnf3bzKOHmQ7C4IUxEfbyZy50bjM,7966
|
|
77
|
-
langfun/core/eval/v2/example.py,sha256=
|
|
78
|
-
langfun/core/eval/v2/example_test.py,sha256=
|
|
79
|
-
langfun/core/eval/v2/experiment.py,sha256=
|
|
80
|
-
langfun/core/eval/v2/experiment_test.py,sha256=
|
|
77
|
+
langfun/core/eval/v2/example.py,sha256=VZeBqMWnfEtn1mmdPW2w2u2XbAWVll1q1-50qL8DjS8,11606
|
|
78
|
+
langfun/core/eval/v2/example_test.py,sha256=RwtBcUumPBWynA8BLMoZetSHdgvFywlHXuyvInf1y_s,3576
|
|
79
|
+
langfun/core/eval/v2/experiment.py,sha256=HbZwnSQYrx_vehKc-hj9ylKjnAS40gHRhNlmIw5bgqE,36314
|
|
80
|
+
langfun/core/eval/v2/experiment_test.py,sha256=7prE4ASKlbwQIXiLzEqjgaF4yQDL7KjxX-dBUPT84VA,14145
|
|
81
81
|
langfun/core/eval/v2/metric_values.py,sha256=WAL1BdHaU_oq7d_k1KyjhiQDK32dNLSyn1L2yEkz0o4,6040
|
|
82
82
|
langfun/core/eval/v2/metric_values_test.py,sha256=5ffwnqrbLIBh1hdUl3L9mpJlUvsmd2VQ8UWPOJcQj4s,3630
|
|
83
83
|
langfun/core/eval/v2/metrics.py,sha256=cdFqrhRlxqpBk_04Mmhk21NcOD0kor5H0iFX54_rO4s,14486
|
|
84
84
|
langfun/core/eval/v2/metrics_test.py,sha256=gf8hT5V5OeM-Ah-Wa4aLtgrYZmlMStKPjEhCTS0VMHQ,6812
|
|
85
85
|
langfun/core/eval/v2/progress.py,sha256=odflCHCqBZua_Al1v5Mjl09JgrdDSfnXKUK4mpC8bPQ,11647
|
|
86
86
|
langfun/core/eval/v2/progress_test.py,sha256=MzJ7wa65XYZ0chArA-lSg1eRSvQ_TzZJIHMk85Kwz7o,3208
|
|
87
|
-
langfun/core/eval/v2/progress_tracking.py,sha256=
|
|
88
|
-
langfun/core/eval/v2/progress_tracking_test.py,sha256=
|
|
87
|
+
langfun/core/eval/v2/progress_tracking.py,sha256=7E5LOt0DUo4yUpnYYrwLnE6FiYJM3Pn1aa93Zl3C3UQ,6439
|
|
88
|
+
langfun/core/eval/v2/progress_tracking_test.py,sha256=37v42y4kh2GfDXBrkugEupW6IRAzA774wwPJaOyefUs,2597
|
|
89
89
|
langfun/core/eval/v2/reporting.py,sha256=-IV-RzR-QriPZz2Ke6nNNRXu6avxpX48zr9c-j815iA,9001
|
|
90
|
-
langfun/core/eval/v2/reporting_test.py,sha256=
|
|
91
|
-
langfun/core/eval/v2/runners/__init__.py,sha256=
|
|
92
|
-
langfun/core/eval/v2/runners/base.py,sha256=
|
|
90
|
+
langfun/core/eval/v2/reporting_test.py,sha256=q3LBfPk7jvEWXB3sdk2CycbMKqNRyXhs5z6BokfwDIE,6096
|
|
91
|
+
langfun/core/eval/v2/runners/__init__.py,sha256=2TcCLW32OsmXQINcVKa2ZJY8Ca7j3NnT0yy9hXYUDn8,1115
|
|
92
|
+
langfun/core/eval/v2/runners/base.py,sha256=Tio4a9lp2lWTZusG9iM3Uqq7GOHflgVXzShlQfhcxA4,14647
|
|
93
|
+
langfun/core/eval/v2/runners/beam.py,sha256=E5X3XunXZ_KGe5MmkVumnFQDR_R1wqYiwpW9NQs25A0,11338
|
|
94
|
+
langfun/core/eval/v2/runners/beam_test.py,sha256=LynBKJexkOk_uyHGR1VhRZLYhGrU5B3JHgIAEi1SFNk,4507
|
|
95
|
+
langfun/core/eval/v2/runners/ckpt_monitor.py,sha256=91vGMgYPOxGL59NYyRiSi51wZsBjt_eXpB6y9oAkLEk,10099
|
|
96
|
+
langfun/core/eval/v2/runners/ckpt_monitor_test.py,sha256=38sdIAObTdYUibD27cmyDCKrl_DhOZLynDKVkOrvbB4,5440
|
|
93
97
|
langfun/core/eval/v2/runners/debug.py,sha256=ExsBcAvmhFsaaS3VLjxE70HImHe2YVs0IpoefM01onY,1442
|
|
94
|
-
langfun/core/eval/v2/runners/debug_test.py,sha256=
|
|
98
|
+
langfun/core/eval/v2/runners/debug_test.py,sha256=kDWs4Fu7itzBxbRwFc-UKEP2hAV0iVFp2wWkEuZNEcg,2577
|
|
95
99
|
langfun/core/eval/v2/runners/parallel.py,sha256=CUX1ZULE0TYU5_Ll3XQWIHFl_CRDJbxVX4HVYJNQDKU,3293
|
|
96
|
-
langfun/core/eval/v2/runners/parallel_test.py,sha256=
|
|
100
|
+
langfun/core/eval/v2/runners/parallel_test.py,sha256=zomSwfvtCly0TolCiWBoZwlA0o2QB0UqX3Q69kzE9oo,3262
|
|
97
101
|
langfun/core/eval/v2/runners/sequential.py,sha256=hebMZd6EVraY9zAwariT9WfsWQyX5AYuRsFdRo-knKU,1631
|
|
98
|
-
langfun/core/eval/v2/runners/sequential_test.py,sha256=
|
|
99
|
-
langfun/core/llms/__init__.py,sha256=
|
|
102
|
+
langfun/core/eval/v2/runners/sequential_test.py,sha256=hyL43WS-4ZLmVClqOpGvoHqkiEetkjrge6ADExQSjqQ,6162
|
|
103
|
+
langfun/core/llms/__init__.py,sha256=QCNlrSvJSxvFi9W98rZ6hes1PHxnd1LBdU9FE9pLfg0,10310
|
|
100
104
|
langfun/core/llms/anthropic.py,sha256=6uE1EC9YWtbiFwZNNPEFv-QzeGQQ7G27kheTTE15Ewg,31175
|
|
101
105
|
langfun/core/llms/anthropic_test.py,sha256=qA9vByp_cwwXNlXzcwHpPWFnO9lfFo8NKfDi5nBNqgI,9052
|
|
102
106
|
langfun/core/llms/azure_openai.py,sha256=LEc7-ay2fOOCwwL3SfxDr3KCdH8-2i1EtD-PBvr4kfk,2777
|
|
@@ -107,9 +111,9 @@ langfun/core/llms/deepseek.py,sha256=jQsotTUk4161EJIcoQOV7iOWBZfQ3Ukh9GOh31A0HYU
|
|
|
107
111
|
langfun/core/llms/deepseek_test.py,sha256=DvROWPlDuow5E1lfoSkhyGt_ELA19JoQoDsTnRgDtTg,1847
|
|
108
112
|
langfun/core/llms/fake.py,sha256=NH8Zlezmx3eacao4D7wihrZjRuyBJuHR5rdyp94PrAw,4409
|
|
109
113
|
langfun/core/llms/fake_test.py,sha256=lC-C2TpEsnf2kmZpa3OiH2H944I4hMWTAaHEXzRj1DU,7855
|
|
110
|
-
langfun/core/llms/gemini.py,sha256=
|
|
111
|
-
langfun/core/llms/gemini_test.py,sha256=
|
|
112
|
-
langfun/core/llms/google_genai.py,sha256=
|
|
114
|
+
langfun/core/llms/gemini.py,sha256=uaIOy20np9OWd_K0gauOEsyZKI7CM_GgAaFxsnF-SDs,31970
|
|
115
|
+
langfun/core/llms/gemini_test.py,sha256=REE3x3v3xTTznUVHLcWxJrpGkc_XCUeDQXtFrv8zD9M,10010
|
|
116
|
+
langfun/core/llms/google_genai.py,sha256=0MaLyh4ndwWEFsMZZZymHxImvao9_kaWmXEElWWXAkE,6516
|
|
113
117
|
langfun/core/llms/google_genai_test.py,sha256=NKNtpebArQ9ZR7Qsnhd2prFIpMjleojy6o6VMXkJ1zY,1502
|
|
114
118
|
langfun/core/llms/groq.py,sha256=O-kv2_R_IkC8wGIT086xin8jYi7QnsakPCGVLR58lMw,12517
|
|
115
119
|
langfun/core/llms/groq_test.py,sha256=P4EgexCqsh4K2x11w0UL_vz-YYNaPdQU0WsDAdnTRQ8,2045
|
|
@@ -121,7 +125,7 @@ langfun/core/llms/openai_compatible_test.py,sha256=8yr_jGmHCDyMwp-VcJwThFgh7B_56
|
|
|
121
125
|
langfun/core/llms/openai_test.py,sha256=1o5rxiHZj-UEgugWN8JmfJtznhUmDywy6dU3Euax-Ts,2639
|
|
122
126
|
langfun/core/llms/rest.py,sha256=eR-M1st5ZnzuitICyYfxSRcmQWmy_eeOoe2bHLalzN0,5351
|
|
123
127
|
langfun/core/llms/rest_test.py,sha256=_zM7nV8DEVyoXNiQOnuwJ917mWjki0614H88rNmDboE,5020
|
|
124
|
-
langfun/core/llms/vertexai.py,sha256=
|
|
128
|
+
langfun/core/llms/vertexai.py,sha256=TvF4nO8p-JS1GvwDfAZL_xmzbqkdnQX1IFhujap7D4Y,21563
|
|
125
129
|
langfun/core/llms/vertexai_test.py,sha256=_e-acnNBAf9C3WO6i1b2J_mhRzdDdYQTorD9hIVZKOg,5034
|
|
126
130
|
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
|
127
131
|
langfun/core/llms/cache/base.py,sha256=qLGlEMi5cfsDxRTsOWrmwbxjvvwUaq4Y8MxlXr69wpw,5060
|
|
@@ -144,8 +148,8 @@ langfun/core/modalities/audio.py,sha256=cb95FzDE-IIQf7kXy7D4AAXtziQF0FYkZUe4pw5E
|
|
|
144
148
|
langfun/core/modalities/audio_test.py,sha256=tW1vEy-Cumhf-HgDgCxlSNZqgJb2HTgqOixGWLiwOmw,2065
|
|
145
149
|
langfun/core/modalities/image.py,sha256=_R_T2Jl1G62Y8erjlyA9E2pT-0rSSXITs25oswH0nuA,2353
|
|
146
150
|
langfun/core/modalities/image_test.py,sha256=XMgtJXY75R5eo0CZ222D1QUy57_hESnttmCGWwDLt7k,3824
|
|
147
|
-
langfun/core/modalities/mime.py,sha256=
|
|
148
|
-
langfun/core/modalities/mime_test.py,sha256=
|
|
151
|
+
langfun/core/modalities/mime.py,sha256=dc0pmWl4S_fmVlHYXT7kx_WcBXxGCfk654w1vOsDAt8,10809
|
|
152
|
+
langfun/core/modalities/mime_test.py,sha256=9Juvs4KQgPfP72nn8TbPNwqShV7Bs8oFe--Qvt0QR5A,6390
|
|
149
153
|
langfun/core/modalities/pdf.py,sha256=rc-uIKRVkTTa0j7jC6WRwKM9WqiS5NxF-H6PPunVeXM,1231
|
|
150
154
|
langfun/core/modalities/pdf_test.py,sha256=ulZ0FbnlsU0wkrdckJ4ONZPTYRyMPO9Aob1UO6FXygk,1950
|
|
151
155
|
langfun/core/modalities/video.py,sha256=ZopyDf-8bi0V-QZDAg-_8S3HkMNiEQL9aWmGuI6Fkrs,1506
|
|
@@ -169,7 +173,7 @@ langfun/core/structured/scoring.py,sha256=BQSme22gV3XcTyALhXNrMR0fkuWhFi0HozSdBR
|
|
|
169
173
|
langfun/core/structured/scoring_test.py,sha256=msxtZX1MWgoLTWkmM-McbUo-qGev0uDdlXLm4kPiIiE,2473
|
|
170
174
|
langfun/core/structured/tokenization.py,sha256=xaOztsBaFj2b3bwny5-pdAutPV9YeAiQTdP81VVwhM4,3436
|
|
171
175
|
langfun/core/structured/tokenization_test.py,sha256=8IXndRokZmlLPZD_jIitfhgcRxBjmG09PhT-WLHe9dw,1499
|
|
172
|
-
langfun/core/structured/schema/__init__.py,sha256=
|
|
176
|
+
langfun/core/structured/schema/__init__.py,sha256=QOKreIMT4QftjHTx764rrB0z0fnw98gA1mzBYVVv6WQ,2256
|
|
173
177
|
langfun/core/structured/schema/base.py,sha256=kpsu729IIIC8r6EsdT6ur2FpwyFoxCrz6WwSCWBkZG4,19488
|
|
174
178
|
langfun/core/structured/schema/base_test.py,sha256=_j9U4GwO9BLpj_ENqw_4XwLopfHG1HgR0ek-VUoXkfE,15039
|
|
175
179
|
langfun/core/structured/schema/json.py,sha256=gWs6Pe99WsZNiv5vNU3VFXKS6GhYpBxuaJMuiU7agxY,5047
|
|
@@ -204,8 +208,8 @@ langfun/env/event_handlers/event_logger.py,sha256=ga8RN8qjwtAOCnV_MnhNPTktN8EJ-x
|
|
|
204
208
|
langfun/env/event_handlers/event_logger_test.py,sha256=qSAcirtRz00H-1RL9ShELBiZKiPxsk_v6cVA6XdAk4k,9274
|
|
205
209
|
langfun/env/event_handlers/metric_writer.py,sha256=7ZrUp0rYvs7TfNpQ16Xbxg8vp-6ZbjuJ-qrhVSbhv2I,21085
|
|
206
210
|
langfun/env/event_handlers/metric_writer_test.py,sha256=bjdYXoXMPWpWz_-HUPM6vFP1ez5G386u0fmPfe-SR_M,5952
|
|
207
|
-
langfun-0.1.2.
|
|
208
|
-
langfun-0.1.2.
|
|
209
|
-
langfun-0.1.2.
|
|
210
|
-
langfun-0.1.2.
|
|
211
|
-
langfun-0.1.2.
|
|
211
|
+
langfun-0.1.2.dev202511270805.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
212
|
+
langfun-0.1.2.dev202511270805.dist-info/METADATA,sha256=R2vGxVHasYKrDywhNr-opNyzmjTeiHKqU_0Yl5ngngA,7522
|
|
213
|
+
langfun-0.1.2.dev202511270805.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
214
|
+
langfun-0.1.2.dev202511270805.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
|
215
|
+
langfun-0.1.2.dev202511270805.dist-info/RECORD,,
|
|
File without changes
|
{langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{langfun-0.1.2.dev202511160804.dist-info → langfun-0.1.2.dev202511270805.dist-info}/top_level.txt
RENAMED
|
File without changes
|