langfun 0.1.2.dev202510230805__py3-none-any.whl → 0.1.2.dev202510250803__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/concurrent_test.py +1 -0
- langfun/core/data/conversion/anthropic_test.py +8 -6
- langfun/core/data/conversion/gemini_test.py +12 -9
- langfun/core/data/conversion/openai.py +134 -30
- langfun/core/data/conversion/openai_test.py +161 -17
- langfun/core/eval/base_test.py +4 -4
- langfun/core/eval/v2/progress_tracking_test.py +3 -0
- langfun/core/langfunc_test.py +6 -4
- langfun/core/language_model.py +15 -6
- langfun/core/language_model_test.py +9 -3
- langfun/core/llms/__init__.py +7 -1
- langfun/core/llms/anthropic.py +130 -0
- langfun/core/llms/cache/base.py +3 -1
- langfun/core/llms/cache/in_memory_test.py +14 -4
- langfun/core/llms/deepseek.py +1 -1
- langfun/core/llms/gemini.py +2 -5
- langfun/core/llms/groq.py +1 -1
- langfun/core/llms/llama_cpp.py +1 -1
- langfun/core/llms/openai.py +7 -2
- langfun/core/llms/openai_compatible.py +136 -27
- langfun/core/llms/openai_compatible_test.py +207 -20
- langfun/core/llms/openai_test.py +0 -2
- langfun/core/llms/vertexai.py +12 -2
- langfun/core/message.py +78 -44
- langfun/core/message_test.py +56 -81
- langfun/core/modalities/__init__.py +8 -0
- langfun/core/modalities/mime.py +9 -0
- langfun/core/modality.py +104 -27
- langfun/core/modality_test.py +42 -12
- langfun/core/sampling_test.py +20 -4
- langfun/core/structured/completion.py +2 -7
- langfun/core/structured/completion_test.py +23 -43
- langfun/core/structured/mapping.py +4 -13
- langfun/core/structured/querying.py +13 -11
- langfun/core/structured/querying_test.py +65 -29
- langfun/core/template.py +39 -13
- langfun/core/template_test.py +83 -17
- langfun/env/event_handlers/metric_writer_test.py +3 -3
- langfun/env/load_balancers_test.py +2 -2
- {langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/METADATA +1 -1
- {langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/RECORD +44 -44
- {langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/WHEEL +0 -0
- {langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/licenses/LICENSE +0 -0
- {langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/top_level.txt +0 -0
langfun/core/template_test.py
CHANGED
|
@@ -176,6 +176,51 @@ class DefinitionTest(unittest.TestCase):
|
|
|
176
176
|
Template('{{x=1')
|
|
177
177
|
|
|
178
178
|
|
|
179
|
+
class FromValueTest(unittest.TestCase):
|
|
180
|
+
|
|
181
|
+
def test_from_str(self):
|
|
182
|
+
t = Template.from_value('Hello {{x}}', x=1)
|
|
183
|
+
self.assertTrue(pg.eq(t, Template('Hello {{x}}', x=1)))
|
|
184
|
+
self.assertEqual(t.render(), 'Hello 1')
|
|
185
|
+
|
|
186
|
+
def test_from_message(self):
|
|
187
|
+
class CustomModality(modality.Modality):
|
|
188
|
+
content: str
|
|
189
|
+
|
|
190
|
+
def to_bytes(self):
|
|
191
|
+
return self.content.encode()
|
|
192
|
+
|
|
193
|
+
message = Template('{{image}}', image=CustomModality('foo')).render()
|
|
194
|
+
t = Template.from_value(message)
|
|
195
|
+
m = t.render()
|
|
196
|
+
self.assertTrue(
|
|
197
|
+
pg.eq(m.modalities(), [CustomModality('foo')])
|
|
198
|
+
)
|
|
199
|
+
self.assertEqual(message.metadata, m.metadata)
|
|
200
|
+
|
|
201
|
+
def test_from_same_template(self):
|
|
202
|
+
t = Template('Hello {{x}}', x=1)
|
|
203
|
+
t2 = Template.from_value(t)
|
|
204
|
+
self.assertTrue(pg.eq(t, t2))
|
|
205
|
+
self.assertEqual(t2.x, 1)
|
|
206
|
+
|
|
207
|
+
def test_from_different_template(self):
|
|
208
|
+
t = Template('Hello {{x}}', x=1)
|
|
209
|
+
|
|
210
|
+
class MyTemplate(Template):
|
|
211
|
+
pass
|
|
212
|
+
|
|
213
|
+
t2 = MyTemplate.from_value(t, x=2)
|
|
214
|
+
self.assertIsInstance(t2, MyTemplate)
|
|
215
|
+
self.assertEqual(t2.template_str, t.template_str)
|
|
216
|
+
self.assertEqual(t2.x, 2)
|
|
217
|
+
|
|
218
|
+
def test_from_python_object(self):
|
|
219
|
+
t = Template.from_value(pg.Dict(x=1, y=2))
|
|
220
|
+
self.assertEqual(t.template_str, '{{input}}')
|
|
221
|
+
self.assertEqual(t.input, pg.Dict(x=1, y=2))
|
|
222
|
+
|
|
223
|
+
|
|
179
224
|
class VarsTest(unittest.TestCase):
|
|
180
225
|
|
|
181
226
|
def assert_missing_vars(self, t: Template, missing_vars: set[str]):
|
|
@@ -251,6 +296,10 @@ class VarsTest(unittest.TestCase):
|
|
|
251
296
|
|
|
252
297
|
class RenderTest(unittest.TestCase):
|
|
253
298
|
|
|
299
|
+
def setUp(self):
|
|
300
|
+
super().setUp()
|
|
301
|
+
self.maxDiff = None
|
|
302
|
+
|
|
254
303
|
def test_clean(self):
|
|
255
304
|
l = Template('\n Hello\n ')
|
|
256
305
|
self.assertEqual(l.render(), 'Hello')
|
|
@@ -279,19 +328,20 @@ class RenderTest(unittest.TestCase):
|
|
|
279
328
|
)
|
|
280
329
|
v = l.render()
|
|
281
330
|
self.assertEqual(v, 'How are you 1')
|
|
282
|
-
self.assertIs(v.x, l.x)
|
|
283
|
-
self.assertEqual(v.x.render_output, 'are you 1')
|
|
284
|
-
self.assertIs(v.x.y, l.x.y)
|
|
285
|
-
self.
|
|
286
|
-
self.assertEqual(v.x.y.
|
|
331
|
+
self.assertIs(v.__template_input__.x, l.x)
|
|
332
|
+
self.assertEqual(v.__template_input__.x.render_output, 'are you 1')
|
|
333
|
+
self.assertIs(v.__template_input__.x.y, l.x.y)
|
|
334
|
+
self.assertIs(v.__template_input__.x.y.n, l.x.y.n)
|
|
335
|
+
self.assertEqual(v.__template_input__.x.y.render_output, 'you 1')
|
|
336
|
+
self.assertEqual(v.__template_input__.x.y.n, 1)
|
|
287
337
|
|
|
288
338
|
def test_render_with_call_args(self):
|
|
289
339
|
l = Template('Hello {{x}} and {{y}}', x=1, y=Template('{{z}}'), z=3)
|
|
290
340
|
v = l.render(x=2)
|
|
291
341
|
self.assertEqual(v, 'Hello 2 and 3')
|
|
292
|
-
self.assertEqual(v.x, 2)
|
|
293
|
-
self.assertEqual(v.y, '3')
|
|
294
|
-
self.assertEqual(v.y.z, 3)
|
|
342
|
+
self.assertEqual(v.__template_input__.x, 2)
|
|
343
|
+
self.assertEqual(v.__template_input__.y, '3')
|
|
344
|
+
self.assertEqual(v.__template_input__.y.z, 3)
|
|
295
345
|
|
|
296
346
|
def test_render_cache(self):
|
|
297
347
|
class DynamicContent(Template):
|
|
@@ -321,11 +371,17 @@ class RenderTest(unittest.TestCase):
|
|
|
321
371
|
def to_bytes(self):
|
|
322
372
|
return self.content.encode()
|
|
323
373
|
|
|
374
|
+
foo = CustomModality('foo')
|
|
375
|
+
message = Template('This is {{ x }} and {{ a }}', x=1, a=foo).render()
|
|
324
376
|
self.assertEqual(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
377
|
+
message,
|
|
378
|
+
'This is 1 and <<[[custom_modality:acbd18db]]>>',
|
|
379
|
+
)
|
|
380
|
+
self.assertIn(
|
|
381
|
+
'custom_modality:acbd18db', message.referred_modalities
|
|
382
|
+
)
|
|
383
|
+
self.assertIs(
|
|
384
|
+
message.referred_modalities['custom_modality:acbd18db'], foo
|
|
329
385
|
)
|
|
330
386
|
|
|
331
387
|
def test_render_with_default(self):
|
|
@@ -511,12 +567,22 @@ class RenderTest(unittest.TestCase):
|
|
|
511
567
|
self.assert_partial(Template('Hello {{len(x)}}'), 'Hello {{len(x)}}')
|
|
512
568
|
|
|
513
569
|
def test_additional_metadata(self):
|
|
514
|
-
t = Template('hi', metadata_weights=1.0, y=2)
|
|
515
|
-
self.assertEqual(
|
|
570
|
+
t = Template('hi {{y}}', metadata_weights=1.0, y=2, z=1)
|
|
571
|
+
self.assertEqual(
|
|
572
|
+
t.render(),
|
|
573
|
+
message_lib.UserMessage(
|
|
574
|
+
'hi 2', weights=1.0, __template_input__={'y': 2}
|
|
575
|
+
)
|
|
576
|
+
)
|
|
516
577
|
|
|
517
|
-
t = Template('hi')
|
|
518
|
-
with component.context(metadata_weights=1.0, y=
|
|
519
|
-
self.assertEqual(
|
|
578
|
+
t = Template('hi {{y}}')
|
|
579
|
+
with component.context(metadata_weights=1.0, y=3):
|
|
580
|
+
self.assertEqual(
|
|
581
|
+
t.render(z=2),
|
|
582
|
+
message_lib.UserMessage(
|
|
583
|
+
'hi 3', weights=1.0, __template_input__={'y': 3}
|
|
584
|
+
)
|
|
585
|
+
)
|
|
520
586
|
|
|
521
587
|
|
|
522
588
|
class TemplateRenderEventTest(unittest.TestCase):
|
|
@@ -31,7 +31,7 @@ class MetricWriterTest(unittest.TestCase):
|
|
|
31
31
|
pool_size=2,
|
|
32
32
|
outage_grace_period=0,
|
|
33
33
|
outage_retry_interval=0,
|
|
34
|
-
housekeep_interval=
|
|
34
|
+
housekeep_interval=10.0,
|
|
35
35
|
sandbox_keepalive_interval=1.0,
|
|
36
36
|
event_handlers=[writer],
|
|
37
37
|
)
|
|
@@ -43,13 +43,13 @@ class MetricWriterTest(unittest.TestCase):
|
|
|
43
43
|
with env.sandbox('session2') as sb:
|
|
44
44
|
sb.shell('echo "bar"', raise_error=RuntimeError)
|
|
45
45
|
|
|
46
|
-
self.
|
|
46
|
+
self.assertIn(
|
|
47
47
|
writer._sandbox_start.value(
|
|
48
48
|
app='test_app',
|
|
49
49
|
environment_id='testing-env',
|
|
50
50
|
error='Success'
|
|
51
51
|
),
|
|
52
|
-
2
|
|
52
|
+
(2, 3)
|
|
53
53
|
)
|
|
54
54
|
self.assertGreater(
|
|
55
55
|
writer._sandbox_housekeep.value(
|
|
@@ -53,10 +53,10 @@ class TestingSandbox(interface.Sandbox):
|
|
|
53
53
|
self.set_status(self.Status.ACQUIRED)
|
|
54
54
|
|
|
55
55
|
def start(self) -> None:
|
|
56
|
-
|
|
56
|
+
pass
|
|
57
57
|
|
|
58
58
|
def shutdown(self) -> None:
|
|
59
|
-
|
|
59
|
+
pass
|
|
60
60
|
|
|
61
61
|
def start_session(self, session_id: str) -> None:
|
|
62
62
|
self._session_id = session_id
|
|
@@ -12,28 +12,28 @@ langfun/core/async_support_test.py,sha256=fMz1ulGrfUCuHp7RtYktuBwpbRN3kCBKnB4LFv
|
|
|
12
12
|
langfun/core/component.py,sha256=g1kQM0bryYYYWVDrSMnHfc74wIBbpfe5_B3s-UIP5GE,3028
|
|
13
13
|
langfun/core/component_test.py,sha256=0CxTgjAud3aj8wBauFhG2FHDqrxCTl4OI4gzQTad-40,9254
|
|
14
14
|
langfun/core/concurrent.py,sha256=zY-pXqlGqss_GI20tM1gXvyW8QepVPUuFNmutcIdhbI,32760
|
|
15
|
-
langfun/core/concurrent_test.py,sha256=
|
|
15
|
+
langfun/core/concurrent_test.py,sha256=Da4oqfu_YWH-B8H2Bv6e8tWIkR0ubkW40bccQ3N1mMg,17855
|
|
16
16
|
langfun/core/console.py,sha256=cLQEf84aDxItA9fStJV22xJch0TqFLNf9hLqwJ0RHmU,2652
|
|
17
17
|
langfun/core/console_test.py,sha256=pBOcuNMJdVELywvroptfcRtJMsegMm3wSlHAL2TdxVk,1679
|
|
18
18
|
langfun/core/langfunc.py,sha256=G50YgoVZ0y1GFw2ev41MlOqr6qa8YakbvNC0h_E0PiA,11140
|
|
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=eY7hNgkwtVKcro2G6Fh2k6upVEg8ggXBKjVmqT8oLn4,8961
|
|
20
|
+
langfun/core/language_model.py,sha256=_YhWB6PsyghkN-ykvVtjr3qUZT9SoAp_pcxX1SQZoe0,52339
|
|
21
|
+
langfun/core/language_model_test.py,sha256=UIQpovmVfJnJ2EDOi9OZG_1UNClWs9lkTaE22_ClSlQ,38550
|
|
22
22
|
langfun/core/logging.py,sha256=7IGAhp7mGokZxxqtL-XZvFLKaZ5k3F5_Xp2NUtR4GwE,9136
|
|
23
23
|
langfun/core/logging_test.py,sha256=vbVGOQxwMmVSiFfbt2897gUt-8nqDpV64jCAeUG_q5U,6924
|
|
24
24
|
langfun/core/memory.py,sha256=vyXVvfvSdLLJAzdIupnbn3k26OgclCx-OJ7gddS5e1Y,2070
|
|
25
|
-
langfun/core/message.py,sha256=
|
|
26
|
-
langfun/core/message_test.py,sha256=
|
|
27
|
-
langfun/core/modality.py,sha256=
|
|
28
|
-
langfun/core/modality_test.py,sha256=
|
|
25
|
+
langfun/core/message.py,sha256=m36GDLtuDVUURkYORTEj61Uho6eILwSkCjrksK0HLWs,33964
|
|
26
|
+
langfun/core/message_test.py,sha256=hjnzxJbjLNau30Ex7h5B0qC8qUU4uscoUcEVayRiXFQ,38355
|
|
27
|
+
langfun/core/modality.py,sha256=h56hfCyxX_rK_BU3pFxXpGD79TvFeRXVo71QvpzmZiw,6596
|
|
28
|
+
langfun/core/modality_test.py,sha256=0MQz6e39XOd2UjAIc5Vq9Eems1IUgOxD7Skf0gTMGTg,3665
|
|
29
29
|
langfun/core/natural_language.py,sha256=3ynSnaYQnjE60LIPK5fyMgdIjubnPYZwzGq4rWPeloE,1177
|
|
30
30
|
langfun/core/natural_language_test.py,sha256=LHGU_1ytbkGuSZQFIFP7vP3dBlcY4-A12fT6dbjUA0E,1424
|
|
31
31
|
langfun/core/sampling.py,sha256=SCnS5PFJWNVxSKvSkSCNRUmruvScun8UcNN4gafuXcw,5866
|
|
32
|
-
langfun/core/sampling_test.py,sha256=
|
|
32
|
+
langfun/core/sampling_test.py,sha256=kzoWYRiAOFFMYDraqnEi7lOWKfhW6EqGBgFRTHxPsaw,3958
|
|
33
33
|
langfun/core/subscription.py,sha256=euawEuSZP-BHydaT-AQpfYFL0m5pWPGcW0upFhrojqc,10930
|
|
34
34
|
langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIcArBo,8717
|
|
35
|
-
langfun/core/template.py,sha256=
|
|
36
|
-
langfun/core/template_test.py,sha256=
|
|
35
|
+
langfun/core/template.py,sha256=CQOEA1Lq0gU_uk43K1FJjpBSwL8o5fglFr2tGCbOxpI,26008
|
|
36
|
+
langfun/core/template_test.py,sha256=vQZvFVS4VHk-6GUdOEQ-UA_4tlVBbpRPqB1Bw7DFJJg,19052
|
|
37
37
|
langfun/core/agentic/__init__.py,sha256=vsnuvjaz9-nysBjdihGf43JC8AyLPhPJwIOevyONyAQ,1517
|
|
38
38
|
langfun/core/agentic/action.py,sha256=ojwaPIV_a_khKPR6x1Fk5i2dsUTSe3VjKaxnZ92b0nE,58243
|
|
39
39
|
langfun/core/agentic/action_eval.py,sha256=YTilyUEkJl_8FVMgdfO17PurWWaEJ6oA15CuefJJRLk,4887
|
|
@@ -54,14 +54,14 @@ langfun/core/coding/python/sandboxing_test.py,sha256=H_0_pd-_uS-ci5yYhmDTR6-hyzo
|
|
|
54
54
|
langfun/core/data/__init__.py,sha256=qllw9ST1vveZv-1E0VM5hezn1YH-OcqGI-yFqQYnWgI,732
|
|
55
55
|
langfun/core/data/conversion/__init__.py,sha256=ZcGntBruvvZSfESO-Tha1nzHfgWEK7I1u78Jw8gsoVU,883
|
|
56
56
|
langfun/core/data/conversion/anthropic.py,sha256=0xf1sWt6WhmG8EsaeLY4Ee7S3FcDWKPOtn6caCBhtrQ,4431
|
|
57
|
-
langfun/core/data/conversion/anthropic_test.py,sha256=
|
|
57
|
+
langfun/core/data/conversion/anthropic_test.py,sha256=BMIyLgFOtFuJYJAkSLR1nwG7UOwtoT61R5xAXtJfSMY,8624
|
|
58
58
|
langfun/core/data/conversion/gemini.py,sha256=mLft9j30W8aIi5a7tOdjfO2v8O8a61FSDKf2k-co93M,5825
|
|
59
|
-
langfun/core/data/conversion/gemini_test.py,sha256=
|
|
60
|
-
langfun/core/data/conversion/openai.py,sha256=
|
|
61
|
-
langfun/core/data/conversion/openai_test.py,sha256=
|
|
59
|
+
langfun/core/data/conversion/gemini_test.py,sha256=LeSToAqEhBHekSCjHFkC_cLN7Xv_cn-nnCURS95511M,7366
|
|
60
|
+
langfun/core/data/conversion/openai.py,sha256=S1isgEgZHr1ZncydA1JSkPTQQxYCamnck8aqVH3s4wE,7203
|
|
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=g2qnOg9zyU20coNTCwX6Fbi0pPFEUoOxHY5uw98LcNg,75810
|
|
64
|
-
langfun/core/eval/base_test.py,sha256=
|
|
64
|
+
langfun/core/eval/base_test.py,sha256=jbl5NMKk9QUsp8R-OeTJ4dEefQdK8JL1lIouuihglbc,27191
|
|
65
65
|
langfun/core/eval/matching.py,sha256=AVKkGoc-BaHEzgSBamaAk3194TgqckDe_dinpS6LrXI,9323
|
|
66
66
|
langfun/core/eval/matching_test.py,sha256=2xtwsTi-UzLTt0QnXl3u_eAG3fFjCG2tsae7YkcQTB0,5312
|
|
67
67
|
langfun/core/eval/patching.py,sha256=R0s2eAd1m97exQt06dmUL0V_MBG0W2Hxg7fhNB7cXW0,3866
|
|
@@ -85,42 +85,42 @@ langfun/core/eval/v2/metrics_test.py,sha256=LibZXvWEJDVRY-Mza_bQT-SbmbXCHUnFhL7Z
|
|
|
85
85
|
langfun/core/eval/v2/progress.py,sha256=azZgssQgNdv3IgjKEaQBuGI5ucFDNbdi02P4z_nQ8GE,10292
|
|
86
86
|
langfun/core/eval/v2/progress_test.py,sha256=YU7VHzmy5knPZwj9vpBN3rQQH2tukj9eKHkuBCI62h8,2540
|
|
87
87
|
langfun/core/eval/v2/progress_tracking.py,sha256=zNhNPGlnJnHELEfFpbTMCSXFn8d1IJ57OOYkfFaBFfM,6097
|
|
88
|
-
langfun/core/eval/v2/progress_tracking_test.py,sha256=
|
|
88
|
+
langfun/core/eval/v2/progress_tracking_test.py,sha256=omOvSTvF-KgzwmXiOUj8sr5DhaYShaGOwTVPmM8AGxQ,2476
|
|
89
89
|
langfun/core/eval/v2/reporting.py,sha256=yUIPCAMnp7InIzpv1DDWrcLO-75iiOUTpscj7smkfrA,8335
|
|
90
90
|
langfun/core/eval/v2/reporting_test.py,sha256=CMK-vwho8cNRJwlbkCqm_v5fykE7Y3V6SaIOCY0CDyA,5671
|
|
91
91
|
langfun/core/eval/v2/runners.py,sha256=bEniZDNu44AQgvqpwLsvBU4V_7WltAe-NPhYgIsLj1E,16848
|
|
92
92
|
langfun/core/eval/v2/runners_test.py,sha256=spjkmqlls_vyERdZMdjv6dhIN9ZfxsDDvIQAWTj2kMk,11954
|
|
93
|
-
langfun/core/llms/__init__.py,sha256=
|
|
94
|
-
langfun/core/llms/anthropic.py,sha256=
|
|
93
|
+
langfun/core/llms/__init__.py,sha256=UJ1UE41JPgkS56uNzJQ5ag9VWJN3OJuNna7aFR4CyOM,10184
|
|
94
|
+
langfun/core/llms/anthropic.py,sha256=O_OuBiFhHou1Y15W2GwYFY1gV3FUsSUBOsAJp9UORqI,30710
|
|
95
95
|
langfun/core/llms/anthropic_test.py,sha256=qA9vByp_cwwXNlXzcwHpPWFnO9lfFo8NKfDi5nBNqgI,9052
|
|
96
96
|
langfun/core/llms/azure_openai.py,sha256=-KkSLaR54MlsIqz_XIwv0TnsBnvNTAxnjA2Q2O2u5KM,2733
|
|
97
97
|
langfun/core/llms/azure_openai_test.py,sha256=lkMZkQdJBV97fTM4C4z8qNfvr6spgiN5G4hvVUIVr0M,1735
|
|
98
98
|
langfun/core/llms/compositional.py,sha256=W_Fe2BdbkjwTzWW-paCWcEeG9oOR3-IcBG8oc73taSM,2878
|
|
99
99
|
langfun/core/llms/compositional_test.py,sha256=4eTnOer-DncRKGaIJW2ZQQMLnt5r2R0UIx_DYOvGAQo,2027
|
|
100
|
-
langfun/core/llms/deepseek.py,sha256=
|
|
100
|
+
langfun/core/llms/deepseek.py,sha256=Pyv2Pmviu91HfNGR994Mh7AKNvWHAAlue7Xfb9MZaPo,5254
|
|
101
101
|
langfun/core/llms/deepseek_test.py,sha256=DvROWPlDuow5E1lfoSkhyGt_ELA19JoQoDsTnRgDtTg,1847
|
|
102
102
|
langfun/core/llms/fake.py,sha256=bDk_4u7V2LmYUotyOaicwzi0-lnWOIIBbR3-Bil1P3o,3481
|
|
103
103
|
langfun/core/llms/fake_test.py,sha256=lC-C2TpEsnf2kmZpa3OiH2H944I4hMWTAaHEXzRj1DU,7855
|
|
104
|
-
langfun/core/llms/gemini.py,sha256
|
|
104
|
+
langfun/core/llms/gemini.py,sha256=-DL5PebzaTjz7rTFw_1RC5O1aE4EYSv3oNsM65YKCoo,30143
|
|
105
105
|
langfun/core/llms/gemini_test.py,sha256=y1s0W65SrdepbZxzgIeoTB2MI7sXnfBDf1NsGn57LbM,7617
|
|
106
106
|
langfun/core/llms/google_genai.py,sha256=ogyoOUK4s1OcSFKun0YK5xBRDVyxmvz9WsYNKAwuB0g,5918
|
|
107
107
|
langfun/core/llms/google_genai_test.py,sha256=NKNtpebArQ9ZR7Qsnhd2prFIpMjleojy6o6VMXkJ1zY,1502
|
|
108
|
-
langfun/core/llms/groq.py,sha256=
|
|
108
|
+
langfun/core/llms/groq.py,sha256=nDhnQEmyNn32DMvNbOv6GZhfZKmFLfIk2lGdqgKrhhg,12073
|
|
109
109
|
langfun/core/llms/groq_test.py,sha256=P4EgexCqsh4K2x11w0UL_vz-YYNaPdQU0WsDAdnTRQ8,2045
|
|
110
|
-
langfun/core/llms/llama_cpp.py,sha256=
|
|
110
|
+
langfun/core/llms/llama_cpp.py,sha256=gESwY8sSSF40dj5RId5oXolmSMDUSKaSS2wDdtTKef8,1416
|
|
111
111
|
langfun/core/llms/llama_cpp_test.py,sha256=wfTO7nmUwL65U2kK9P9fcMt92JjNDuVia4G1E7znf_4,1086
|
|
112
|
-
langfun/core/llms/openai.py,sha256=
|
|
113
|
-
langfun/core/llms/openai_compatible.py,sha256=
|
|
114
|
-
langfun/core/llms/openai_compatible_test.py,sha256=
|
|
115
|
-
langfun/core/llms/openai_test.py,sha256=
|
|
112
|
+
langfun/core/llms/openai.py,sha256=ytappj4uh_DOncIexg8MaoRB534j5qU-R8ka57SFuV0,44277
|
|
113
|
+
langfun/core/llms/openai_compatible.py,sha256=l8nucff-ovmiv9PvrAMSp9v5GE7t8nu4_knGQrKN52o,9319
|
|
114
|
+
langfun/core/llms/openai_compatible_test.py,sha256=8yr_jGmHCDyMwp-VcJwThFgh7B_56h69Fmw97XZxAZw,23133
|
|
115
|
+
langfun/core/llms/openai_test.py,sha256=1o5rxiHZj-UEgugWN8JmfJtznhUmDywy6dU3Euax-Ts,2639
|
|
116
116
|
langfun/core/llms/rest.py,sha256=YXzSjr7YgtZ5zKDgjA-3D-sabo5wTjpLQDHUIcEPPgg,4773
|
|
117
117
|
langfun/core/llms/rest_test.py,sha256=_zM7nV8DEVyoXNiQOnuwJ917mWjki0614H88rNmDboE,5020
|
|
118
|
-
langfun/core/llms/vertexai.py,sha256=
|
|
118
|
+
langfun/core/llms/vertexai.py,sha256=Pob7eCw5GpfeATL2zXUYJahxPEhcvLIfO54iy7wGGdQ,20568
|
|
119
119
|
langfun/core/llms/vertexai_test.py,sha256=_e-acnNBAf9C3WO6i1b2J_mhRzdDdYQTorD9hIVZKOg,5034
|
|
120
120
|
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
|
121
|
-
langfun/core/llms/cache/base.py,sha256=
|
|
121
|
+
langfun/core/llms/cache/base.py,sha256=xVUOfHWa8uzuVcvhBPqGcmBKlQlOGpqemBXfYyqq5y0,4024
|
|
122
122
|
langfun/core/llms/cache/in_memory.py,sha256=i58oiQL28RDsq37dwqgVpC2mBETJjIEFS20yHiV5MKU,5185
|
|
123
|
-
langfun/core/llms/cache/in_memory_test.py,sha256=
|
|
123
|
+
langfun/core/llms/cache/in_memory_test.py,sha256=AG9OGdxfyW9LdteFRF-aOIhxiH5Kna5U-pQk91ljHCQ,10538
|
|
124
124
|
langfun/core/mcp/__init__.py,sha256=cyVP_YTjOmbjhYg8BE7-RnE4Txt8wDukYC0anhHKpuo,286
|
|
125
125
|
langfun/core/mcp/client.py,sha256=NBo4W2fdvYyywlUHynAbyh7LNohILccTkCiisj-UEEg,3642
|
|
126
126
|
langfun/core/mcp/client_test.py,sha256=Vjbh7bXM8xXMMe_QOnFJ4rE0wITovAZbwk7Nu-cqf8g,2766
|
|
@@ -131,30 +131,30 @@ langfun/core/mcp/testing/simple_mcp_server.py,sha256=dw4t6ERWMdmi6kDE38RU5oYu5MQ
|
|
|
131
131
|
langfun/core/memories/__init__.py,sha256=HpghfZ-w1NQqzJXBx8Lz0daRhB2rcy2r9Xm491SBhC4,773
|
|
132
132
|
langfun/core/memories/conversation_history.py,sha256=KR78PurXTSeqsRK9QG9xM7-f245rs20EvWO7Mm2n2Vw,1827
|
|
133
133
|
langfun/core/memories/conversation_history_test.py,sha256=2kzAq2pUrbR01Z9jhxviIao52JK4JVjr5iGP8pwGxlU,2156
|
|
134
|
-
langfun/core/modalities/__init__.py,sha256=
|
|
134
|
+
langfun/core/modalities/__init__.py,sha256=2_T5Hsc4iEqmJZuYaqwRNgNM5XpmuTVcnZUMe5cAQDk,1521
|
|
135
135
|
langfun/core/modalities/audio.py,sha256=qCrVCX690SG0ps-ZfOtNWvHn_CmdJsmxF7GySScWUqY,964
|
|
136
136
|
langfun/core/modalities/audio_test.py,sha256=tW1vEy-Cumhf-HgDgCxlSNZqgJb2HTgqOixGWLiwOmw,2065
|
|
137
137
|
langfun/core/modalities/image.py,sha256=9TMO63UHtkimouDb6e1naXWxbK7kRgSGPLzBY26BNk8,1835
|
|
138
138
|
langfun/core/modalities/image_test.py,sha256=XMgtJXY75R5eo0CZ222D1QUy57_hESnttmCGWwDLt7k,3824
|
|
139
|
-
langfun/core/modalities/mime.py,sha256=
|
|
139
|
+
langfun/core/modalities/mime.py,sha256=K_nnm0p6413IqTGyXAezLdRdEDNi6ByuX4xMOELfOIM,9204
|
|
140
140
|
langfun/core/modalities/mime_test.py,sha256=n084tOkeKHKMOVblCmi5s8nw4o7VYn3ynqvcrz8ww7c,5977
|
|
141
141
|
langfun/core/modalities/pdf.py,sha256=mfaeCbUA4JslFVTARiJh8hW7imvL4tLVw9gUhO5bAZA,727
|
|
142
142
|
langfun/core/modalities/pdf_test.py,sha256=ulZ0FbnlsU0wkrdckJ4ONZPTYRyMPO9Aob1UO6FXygk,1950
|
|
143
143
|
langfun/core/modalities/video.py,sha256=vI9apcHIHGyp90i34Srg7S3G6IBDtDCk8qiXhwRQmkw,967
|
|
144
144
|
langfun/core/modalities/video_test.py,sha256=7OXZoohKMYjt7vrJUdPb553HLyl1oBOKRgzBePFv68Q,2042
|
|
145
145
|
langfun/core/structured/__init__.py,sha256=uc9f2DaXcbPRU35CgTpObub6hsnxDCHx-4s149qnzJ0,3655
|
|
146
|
-
langfun/core/structured/completion.py,sha256=
|
|
147
|
-
langfun/core/structured/completion_test.py,sha256
|
|
146
|
+
langfun/core/structured/completion.py,sha256=0qfbmHBDftI4f-CkPBxYC934x41yKTOVbgOEXBwDZ1w,8672
|
|
147
|
+
langfun/core/structured/completion_test.py,sha256=OoyxtbiaAdy_QfJeTNKfvijPiC0H91gIjuIiWvGUd4o,19776
|
|
148
148
|
langfun/core/structured/description.py,sha256=6BztYOiucPkF4CrTQtPLPJo1gN2dwnKmaJW83GBf4H0,5213
|
|
149
149
|
langfun/core/structured/description_test.py,sha256=UxaXnKKP7TnyPDPUyf3U-zPE0TvLlIP6DGr8thjcePw,7365
|
|
150
150
|
langfun/core/structured/function_generation.py,sha256=g7AOR_e8HxFU6n6Df750aGkgMgV1KExLZMAz0yd5Agg,8555
|
|
151
151
|
langfun/core/structured/function_generation_test.py,sha256=LaXYDXf9GlqUrR6v_gtmK_H4kxzonmU7SYbn7XXMgjU,12128
|
|
152
|
-
langfun/core/structured/mapping.py,sha256=
|
|
152
|
+
langfun/core/structured/mapping.py,sha256=Q1zhkTdOYQBOVqekNEOTtTP_1mGhu_5ChYza3Ms2_u0,14035
|
|
153
153
|
langfun/core/structured/mapping_test.py,sha256=OntYvfDitAf0tAnzQty3YS90vyEn6FY1Mi93r_ViEk8,9594
|
|
154
154
|
langfun/core/structured/parsing.py,sha256=bLi7o1AdyDWc6TwxmYg70t_oTgmLkJWBafakdF8n2RI,14195
|
|
155
155
|
langfun/core/structured/parsing_test.py,sha256=vRfCSzA9q7C1cElkAnDvbRepULEa_vclqDIv-heypDw,22745
|
|
156
|
-
langfun/core/structured/querying.py,sha256=
|
|
157
|
-
langfun/core/structured/querying_test.py,sha256=
|
|
156
|
+
langfun/core/structured/querying.py,sha256=5PYVZUkf2YIJmwN6CDBgwubiU7mK2jGMAEZH6wp-afM,39552
|
|
157
|
+
langfun/core/structured/querying_test.py,sha256=zjUEtBPcD0xAPKVmnIwZLzoGpRCMk5pIDtMDG2K5Ps4,51728
|
|
158
158
|
langfun/core/structured/schema.py,sha256=xtgrr3t5tcYQ2gi_fkTKz2IgDMf84gpiykmBdfnV6Io,29486
|
|
159
159
|
langfun/core/structured/schema_generation.py,sha256=pEWeTd8tQWYnEHukas6GVl4uGerLsQ2aNybtnm4Qgxc,5352
|
|
160
160
|
langfun/core/structured/schema_generation_test.py,sha256=RM9s71kMNg2jTePwInkiW9fK1ACN37eyPeF8OII-0zw,2950
|
|
@@ -180,16 +180,16 @@ langfun/env/base_test.py,sha256=DrBtyweO4v8Fz3Oz-gnpJ4W_9hRhuVXA1CTLvXJDa9s,6109
|
|
|
180
180
|
langfun/env/interface.py,sha256=2Amf-_op7dGRF8c4-wYxcFxs1UCBYz1AB20Lk7__V4E,25724
|
|
181
181
|
langfun/env/interface_test.py,sha256=hfQn4RRTEo1YfVHXTPzH1puzD14BTo8R_5v1IpXVZ90,1398
|
|
182
182
|
langfun/env/load_balancers.py,sha256=qRhCthqzjZIQBwta8qC1C0s0J-VQAVomJQqI7Nqv-r4,1948
|
|
183
|
-
langfun/env/load_balancers_test.py,sha256=
|
|
183
|
+
langfun/env/load_balancers_test.py,sha256=73QQG-Lufy5DBhQuzWNUaaH24YiZFdZEHe67TkJn7a0,3708
|
|
184
184
|
langfun/env/test_utils.py,sha256=rnIQZ2ZpiFuB7yfl5ckGtacBoySAwguzBzXzqhyo8jw,14042
|
|
185
185
|
langfun/env/event_handlers/__init__.py,sha256=H34n-TbKSgtxqBhE-yAti8fY6weF2_v3yw59M9_zmGM,443
|
|
186
186
|
langfun/env/event_handlers/base.py,sha256=eGdJ6N5em9kX-c9wzm1TdnRP5_5IAltX5JTHILdjzLM,10124
|
|
187
187
|
langfun/env/event_handlers/event_logger.py,sha256=3dbPjBe53dBgntYHlyLlj_77hVecPSXkmKeiGXMxlO0,12699
|
|
188
188
|
langfun/env/event_handlers/event_logger_test.py,sha256=PGof3rPllNnyzs3Yp8kaOHLeTkVrzUgCJwlODTrVRKI,9111
|
|
189
189
|
langfun/env/event_handlers/metric_writer.py,sha256=NgJKsd6xWOtEd0IjYi7coGEaqGYkkPcDjXN9CQ3vxPU,18043
|
|
190
|
-
langfun/env/event_handlers/metric_writer_test.py,sha256=
|
|
191
|
-
langfun-0.1.2.
|
|
192
|
-
langfun-0.1.2.
|
|
193
|
-
langfun-0.1.2.
|
|
194
|
-
langfun-0.1.2.
|
|
195
|
-
langfun-0.1.2.
|
|
190
|
+
langfun/env/event_handlers/metric_writer_test.py,sha256=deqCIdo-Q89rRCF2lerU3GpWmFG_SvDx162UQIZxPgE,5338
|
|
191
|
+
langfun-0.1.2.dev202510250803.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
192
|
+
langfun-0.1.2.dev202510250803.dist-info/METADATA,sha256=XnXFFEd0l7fdGDPdiJZ4VmFT56ssu8MUyOdpDTsUaF4,7522
|
|
193
|
+
langfun-0.1.2.dev202510250803.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
194
|
+
langfun-0.1.2.dev202510250803.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
|
195
|
+
langfun-0.1.2.dev202510250803.dist-info/RECORD,,
|
|
File without changes
|
{langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{langfun-0.1.2.dev202510230805.dist-info → langfun-0.1.2.dev202510250803.dist-info}/top_level.txt
RENAMED
|
File without changes
|