langfun 0.0.2.dev20240330__py3-none-any.whl → 0.0.2.dev20240511__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/__init__.py +7 -0
- langfun/core/__init__.py +1 -0
- langfun/core/coding/python/correction.py +0 -7
- langfun/core/component.py +6 -0
- langfun/core/component_test.py +1 -0
- langfun/core/eval/__init__.py +15 -0
- langfun/core/eval/base.py +665 -95
- langfun/core/eval/base_test.py +224 -53
- langfun/core/eval/matching.py +48 -30
- langfun/core/eval/matching_test.py +25 -3
- langfun/core/eval/patching.py +130 -0
- langfun/core/eval/patching_test.py +170 -0
- langfun/core/eval/scoring.py +19 -10
- langfun/core/eval/scoring_test.py +21 -3
- langfun/core/langfunc.py +1 -22
- langfun/core/langfunc_test.py +10 -4
- langfun/core/language_model.py +130 -24
- langfun/core/language_model_test.py +249 -26
- langfun/core/llms/__init__.py +27 -2
- langfun/core/llms/anthropic.py +263 -0
- langfun/core/llms/anthropic_test.py +167 -0
- langfun/core/llms/cache/in_memory_test.py +37 -28
- langfun/core/llms/fake.py +34 -25
- langfun/core/llms/fake_test.py +122 -11
- langfun/core/llms/google_genai.py +8 -0
- langfun/core/llms/google_genai_test.py +8 -3
- langfun/core/llms/groq.py +260 -0
- langfun/core/llms/groq_test.py +170 -0
- langfun/core/llms/llama_cpp.py +3 -1
- langfun/core/llms/openai.py +100 -81
- langfun/core/llms/openai_test.py +287 -60
- langfun/core/llms/vertexai.py +291 -0
- langfun/core/llms/vertexai_test.py +233 -0
- langfun/core/modalities/image.py +1 -3
- langfun/core/modalities/mime.py +6 -0
- langfun/core/modalities/video.py +6 -5
- langfun/core/structured/__init__.py +5 -0
- langfun/core/structured/completion_test.py +2 -2
- langfun/core/structured/function_generation.py +245 -0
- langfun/core/structured/function_generation_test.py +329 -0
- langfun/core/structured/mapping.py +61 -3
- langfun/core/structured/mapping_test.py +17 -0
- langfun/core/structured/parsing_test.py +18 -13
- langfun/core/structured/prompting.py +61 -12
- langfun/core/structured/prompting_test.py +122 -12
- langfun/core/structured/schema.py +38 -6
- langfun/core/structured/schema_generation_test.py +2 -2
- langfun/core/structured/schema_test.py +36 -7
- langfun/core/structured/scoring.py +4 -1
- langfun/core/structured/scoring_test.py +6 -0
- langfun/core/template.py +147 -11
- langfun/core/template_test.py +75 -0
- langfun/core/templates/selfplay_test.py +6 -2
- {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/METADATA +3 -2
- langfun-0.0.2.dev20240511.dist-info/RECORD +112 -0
- langfun-0.0.2.dev20240330.dist-info/RECORD +0 -102
- {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/LICENSE +0 -0
- {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/WHEEL +0 -0
- {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/top_level.txt +0 -0
langfun/core/template.py
CHANGED
@@ -17,7 +17,7 @@ import contextlib
|
|
17
17
|
import dataclasses
|
18
18
|
import functools
|
19
19
|
import inspect
|
20
|
-
from typing import Annotated, Any, Callable, Iterator, Set, Tuple, Type
|
20
|
+
from typing import Annotated, Any, Callable, Iterator, Set, Tuple, Type, Union
|
21
21
|
|
22
22
|
import jinja2
|
23
23
|
from jinja2 import meta as jinja2_meta
|
@@ -38,13 +38,22 @@ NO_TEMPLATE_DOCSTR_SIGN = 'THIS IS NOT A TEMPLATE'
|
|
38
38
|
_TLS_RENDER_STACK = '_template_render_stack'
|
39
39
|
_TLS_RENDER_RESULT_CACHE = '_template_render_result_cache'
|
40
40
|
|
41
|
+
# The prefix for fields or contextual attributes to be treated as additional
|
42
|
+
# metadata for rendered message.
|
43
|
+
_ADDITIONAL_METADATA_PREFIX = 'metadata_'
|
44
|
+
|
41
45
|
|
42
46
|
class Template(
|
43
47
|
natural_language.NaturalLanguageFormattable,
|
44
48
|
component.Component,
|
45
49
|
pg.typing.CustomTyping,
|
46
50
|
):
|
47
|
-
"""Langfun string template.
|
51
|
+
"""Langfun string template.
|
52
|
+
|
53
|
+
Langfun uses jinja2 as its template engine. Pleaes check out
|
54
|
+
https://jinja.palletsprojects.com/en/3.1.x/templates/ for detailed
|
55
|
+
explanation on the template language.
|
56
|
+
"""
|
48
57
|
|
49
58
|
template_str: Annotated[
|
50
59
|
str,
|
@@ -97,6 +106,11 @@ class Template(
|
|
97
106
|
# Declare template variables as symbolic attributes.
|
98
107
|
template_vars = Template.resolve_vars(template_str)
|
99
108
|
for var_name in template_vars:
|
109
|
+
if 'DEFAULT' == var_name:
|
110
|
+
raise ValueError(
|
111
|
+
'`{{ DEFAULT }}` cannot be used in pre-configured templates. '
|
112
|
+
f'Encountered: {template_str!r}'
|
113
|
+
)
|
100
114
|
# NOTE(daiyip): This is to avoid warning from accessing
|
101
115
|
# `pg.Object.schema`, which was replaced by `pg.Object.__schema__`.
|
102
116
|
if var_name == 'schema' or not hasattr(cls, var_name):
|
@@ -149,7 +163,7 @@ class Template(
|
|
149
163
|
# TODO(daiyip): Consider to delay template parsing upon usage.
|
150
164
|
unassigned_vars = {}
|
151
165
|
for k in self._variables:
|
152
|
-
if not hasattr(self, k):
|
166
|
+
if k not in ('DEFAULT',) and not hasattr(self, k):
|
153
167
|
unassigned_vars[k] = component.contextual()
|
154
168
|
if unassigned_vars:
|
155
169
|
self.rebind(unassigned_vars, skip_notification=True)
|
@@ -303,19 +317,19 @@ class Template(
|
|
303
317
|
with modality.format_modality_as_ref():
|
304
318
|
rendered_text = self._template.render(**inputs)
|
305
319
|
|
320
|
+
# Carry additional metadata.
|
321
|
+
metadata = self.additional_metadata()
|
322
|
+
|
306
323
|
if self.clean:
|
307
324
|
rendered_text = rendered_text.strip()
|
308
325
|
|
309
|
-
|
310
|
-
|
311
|
-
text=rendered_text,
|
312
|
-
metadata={
|
313
|
-
k: pg.Ref(v)
|
314
|
-
for k, v in inputs.items()
|
315
|
-
if not inspect.ismethod(v)
|
316
|
-
},
|
326
|
+
metadata.update(
|
327
|
+
{k: pg.Ref(v) for k, v in inputs.items() if not inspect.ismethod(v)}
|
317
328
|
)
|
318
329
|
|
330
|
+
# Fill the variables for rendering the template as metadata.
|
331
|
+
message = message_cls(text=rendered_text, metadata=metadata)
|
332
|
+
|
319
333
|
# Tag input as rendered message.
|
320
334
|
message.tag(message_lib.Message.TAG_RENDERED)
|
321
335
|
|
@@ -340,6 +354,20 @@ class Template(
|
|
340
354
|
top = pg.object_utils.thread_local_pop(_TLS_RENDER_STACK)
|
341
355
|
assert top is self, (top, self)
|
342
356
|
|
357
|
+
def additional_metadata(self) -> dict[str, Any]:
|
358
|
+
"""Returns additional metadta to be carried in the rendered message."""
|
359
|
+
metadata = {}
|
360
|
+
# Carry metadata from `lf.context`.
|
361
|
+
for k, v in component.all_contextual_values().items():
|
362
|
+
if k.startswith(_ADDITIONAL_METADATA_PREFIX):
|
363
|
+
metadata[k.removeprefix(_ADDITIONAL_METADATA_PREFIX)] = v
|
364
|
+
|
365
|
+
# Carry metadata from fields.
|
366
|
+
for k, v in self.sym_init_args.items():
|
367
|
+
if k.startswith(_ADDITIONAL_METADATA_PREFIX):
|
368
|
+
metadata[k.removeprefix(_ADDITIONAL_METADATA_PREFIX)] = v
|
369
|
+
return metadata
|
370
|
+
|
343
371
|
#
|
344
372
|
# Implements `pg.typing.CustomTyping`.
|
345
373
|
#
|
@@ -380,6 +408,114 @@ class Template(
|
|
380
408
|
# Override __hash__ since __eq__ has changed.
|
381
409
|
return object.__hash__(self)
|
382
410
|
|
411
|
+
#
|
412
|
+
# Special methods.
|
413
|
+
#
|
414
|
+
|
415
|
+
@property
|
416
|
+
def DEFAULT(self) -> 'Template':
|
417
|
+
"""Referring to the default value used for this template.
|
418
|
+
|
419
|
+
This method is intended to be used in template for referring to the default
|
420
|
+
value of current template. There are two scenarios:
|
421
|
+
|
422
|
+
Scenario 1: Use instance-level template_str to override the class default.
|
423
|
+
|
424
|
+
```
|
425
|
+
class Foo(lf.Template):
|
426
|
+
'''Foo template.
|
427
|
+
|
428
|
+
This is {{x}}.
|
429
|
+
'''
|
430
|
+
|
431
|
+
f = Foo(template_str='<h1>{{DEFAULT}}</h1>', x=1)
|
432
|
+
f.render()
|
433
|
+
|
434
|
+
>> <h1>This is 1.</h1>
|
435
|
+
```
|
436
|
+
|
437
|
+
Scenario 2: Use an ad-hoc template to override a predefined field.
|
438
|
+
|
439
|
+
```
|
440
|
+
class Bar(lf.Template):
|
441
|
+
'''Bar template.
|
442
|
+
|
443
|
+
{{preamble}}
|
444
|
+
{{prompt}}
|
445
|
+
'''
|
446
|
+
preamble: lf.Template = lf.Template('You are a chat bot.')
|
447
|
+
prompt: lf.Template = lf.Template('User: hi')
|
448
|
+
|
449
|
+
b = Bar(preamble=lf.Template('<h1>{{DEFAULT}}<h1>'),
|
450
|
+
prompt=lf.Template('<h2>{{DEFAULT}}</h2>')
|
451
|
+
b.render()
|
452
|
+
|
453
|
+
>> <h1>You are a chat bot.<h1>
|
454
|
+
>> <h2>User: hi</h2>
|
455
|
+
```
|
456
|
+
|
457
|
+
Returns:
|
458
|
+
The default (pre-configured) value used for this template.
|
459
|
+
"""
|
460
|
+
base_template = self.__class__.__schema__['template_str'].default_value
|
461
|
+
if base_template == pg.MISSING_VALUE:
|
462
|
+
if not self.sym_path:
|
463
|
+
raise ValueError(
|
464
|
+
f'No DEFAULT template found for {self!r}: '
|
465
|
+
'The template neither has a default `template_str` nor is '
|
466
|
+
'contained under another object.'
|
467
|
+
)
|
468
|
+
key = self.sym_path.key
|
469
|
+
assert self.sym_parent is not None
|
470
|
+
assigned_field = self.sym_parent.sym_attr_field(key)
|
471
|
+
container_cls = self.sym_parent.__class__
|
472
|
+
|
473
|
+
if (
|
474
|
+
assigned_field is None
|
475
|
+
or assigned_field.default_value == pg.MISSING_VALUE
|
476
|
+
):
|
477
|
+
raise ValueError(
|
478
|
+
f'No DEFAULT template found for {self!r}: '
|
479
|
+
f'`{container_cls.__name__}.{key}` '
|
480
|
+
'does not have a default value. '
|
481
|
+
)
|
482
|
+
base_template = assigned_field.default_value
|
483
|
+
if isinstance(base_template, Template):
|
484
|
+
base_template = base_template.template_str
|
485
|
+
if not isinstance(base_template, str):
|
486
|
+
raise ValueError(
|
487
|
+
f'No DEFAULT template found for {self!r}: The default '
|
488
|
+
f'value {base_template!r} of '
|
489
|
+
f'`{container_cls.__name__}.{key}` is not a '
|
490
|
+
'`lf.Template` object or str.'
|
491
|
+
)
|
492
|
+
t = Template(base_template)
|
493
|
+
# NOTE(daiyip): Set the parent of the newly created template to self so
|
494
|
+
# it could access all the contextual variables.
|
495
|
+
t.sym_setparent(self)
|
496
|
+
return t
|
497
|
+
|
498
|
+
@classmethod
|
499
|
+
def from_value(
|
500
|
+
cls,
|
501
|
+
value: Union[str, message_lib.Message, 'Template'],
|
502
|
+
**kwargs
|
503
|
+
) -> 'Template':
|
504
|
+
"""Create a template object from a string or template."""
|
505
|
+
if isinstance(value, cls):
|
506
|
+
return value.clone(override=kwargs) if kwargs else value # pylint: disable=no-value-for-parameter
|
507
|
+
if isinstance(value, str):
|
508
|
+
return cls(template_str=value, **kwargs)
|
509
|
+
if isinstance(value, message_lib.Message):
|
510
|
+
kwargs.update(value.metadata)
|
511
|
+
return cls(template_str=value.text, **kwargs)
|
512
|
+
if isinstance(value, Template):
|
513
|
+
lfun = cls(template_str=value.template_str, **kwargs)
|
514
|
+
# So lfun could acccess all attributes from value.
|
515
|
+
lfun.sym_setparent(value)
|
516
|
+
return lfun
|
517
|
+
return cls(template_str='{{input}}', input=value, **kwargs)
|
518
|
+
|
383
519
|
|
384
520
|
# Register converter from str to LangFunc, therefore we can always
|
385
521
|
# pass strs to attributes that accept LangFunc.
|
langfun/core/template_test.py
CHANGED
@@ -16,6 +16,7 @@ import inspect
|
|
16
16
|
import unittest
|
17
17
|
|
18
18
|
from langfun.core import component
|
19
|
+
from langfun.core import message as message_lib
|
19
20
|
from langfun.core import modality
|
20
21
|
from langfun.core import subscription
|
21
22
|
from langfun.core.template import Template
|
@@ -311,6 +312,72 @@ class RenderTest(unittest.TestCase):
|
|
311
312
|
'This is 1 and {{a}}',
|
312
313
|
)
|
313
314
|
|
315
|
+
def test_render_with_default(self):
|
316
|
+
|
317
|
+
class Foo(Template):
|
318
|
+
"""Foo.
|
319
|
+
|
320
|
+
This is {{x}}
|
321
|
+
"""
|
322
|
+
|
323
|
+
f = Foo(template_str='!{{DEFAULT}}!', x=1)
|
324
|
+
self.assertEqual(f.DEFAULT.x, 1)
|
325
|
+
self.assertEqual(
|
326
|
+
f.render(), '!This is 1!'
|
327
|
+
)
|
328
|
+
|
329
|
+
class Bar(Template):
|
330
|
+
"""Bar.
|
331
|
+
|
332
|
+
{{preamble}}
|
333
|
+
{{prompt}}
|
334
|
+
"""
|
335
|
+
|
336
|
+
preamble: Template = Template('You are a chat bot.')
|
337
|
+
prompt: Template = Template('User: hi! {{name}}')
|
338
|
+
|
339
|
+
b = Bar(
|
340
|
+
preamble=Template('<h1>{{DEFAULT}}</h1>'),
|
341
|
+
prompt=Template('<h2>{{DEFAULT}}</h2>'),
|
342
|
+
name='Tom',
|
343
|
+
)
|
344
|
+
# Test variable access.
|
345
|
+
self.assertEqual(
|
346
|
+
b.render(),
|
347
|
+
inspect.cleandoc("""
|
348
|
+
<h1>You are a chat bot.</h1>
|
349
|
+
<h2>User: hi! Tom</h2>
|
350
|
+
"""),
|
351
|
+
)
|
352
|
+
|
353
|
+
with self.assertRaisesRegex(ValueError, '`{{ DEFAULT }}` cannot be used'):
|
354
|
+
|
355
|
+
class Baz(Template): # pylint: disable=unused-variable
|
356
|
+
"""Baz.
|
357
|
+
|
358
|
+
{{DEFAULT}}
|
359
|
+
"""
|
360
|
+
|
361
|
+
with self.assertRaisesRegex(
|
362
|
+
ValueError, 'The template neither has a default `template_str` nor'
|
363
|
+
):
|
364
|
+
Template('{{DEFAULT}}').render()
|
365
|
+
|
366
|
+
d = pg.Dict(x=Template('{{DEFAULT}}'))
|
367
|
+
with self.assertRaisesRegex(
|
368
|
+
ValueError, 'does not have a default value'
|
369
|
+
):
|
370
|
+
_ = d.x.DEFAULT
|
371
|
+
|
372
|
+
class Tes(pg.Object):
|
373
|
+
x: str | None = None
|
374
|
+
|
375
|
+
t = Tes(x=Template('{{DEFAULT}}'))
|
376
|
+
with self.assertRaisesRegex(
|
377
|
+
ValueError, 'is not a `lf.Template` object or str'
|
378
|
+
):
|
379
|
+
_ = t.x.DEFAULT
|
380
|
+
|
314
381
|
def test_bad_render(self):
|
315
382
|
with self.assertRaises(ValueError):
|
316
383
|
Template('Hello {{x}}').render(allow_partial=False)
|
@@ -427,6 +494,14 @@ class RenderTest(unittest.TestCase):
|
|
427
494
|
# Test len.
|
428
495
|
self.assert_partial(Template('Hello {{len(x)}}'), 'Hello {{len(x)}}')
|
429
496
|
|
497
|
+
def test_additional_metadata(self):
|
498
|
+
t = Template('hi', metadata_weights=1.0, y=2)
|
499
|
+
self.assertEqual(t.render(), message_lib.UserMessage('hi', weights=1.0))
|
500
|
+
|
501
|
+
t = Template('hi')
|
502
|
+
with component.context(metadata_weights=1.0, y=2):
|
503
|
+
self.assertEqual(t.render(), message_lib.UserMessage('hi', weights=1.0))
|
504
|
+
|
430
505
|
|
431
506
|
class TemplateRenderEventTest(unittest.TestCase):
|
432
507
|
|
@@ -56,7 +56,9 @@ class SelfPlayTest(unittest.TestCase):
|
|
56
56
|
g = NumberGuess(target_num=10)
|
57
57
|
|
58
58
|
with lf.context(lm=NumberGuesser(guesses=[50, 20, 5, 10])):
|
59
|
-
self.assertEqual(
|
59
|
+
self.assertEqual(
|
60
|
+
g(), lf.AIMessage('10', score=0.0, logprobs=None, usage=None)
|
61
|
+
)
|
60
62
|
|
61
63
|
self.assertEqual(g.num_turns, 4)
|
62
64
|
|
@@ -64,7 +66,9 @@ class SelfPlayTest(unittest.TestCase):
|
|
64
66
|
g = NumberGuess(target_num=10, max_turns=10)
|
65
67
|
|
66
68
|
with lf.context(lm=NumberGuesser(guesses=[50, 20, 5, 2, 5, 4])):
|
67
|
-
self.assertEqual(
|
69
|
+
self.assertEqual(
|
70
|
+
g(), lf.AIMessage('2', score=0.0, logprobs=None, usage=None)
|
71
|
+
)
|
68
72
|
|
69
73
|
self.assertEqual(g.num_turns, 10)
|
70
74
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: langfun
|
3
|
-
Version: 0.0.2.
|
3
|
+
Version: 0.0.2.dev20240511
|
4
4
|
Summary: Langfun: Language as Functions.
|
5
5
|
Home-page: https://github.com/google/langfun
|
6
6
|
Author: Langfun Authors
|
@@ -21,10 +21,11 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries
|
22
22
|
Description-Content-Type: text/markdown
|
23
23
|
License-File: LICENSE
|
24
|
+
Requires-Dist: google-cloud-aiplatform >=1.5.0
|
24
25
|
Requires-Dist: google-generativeai >=0.3.2
|
25
26
|
Requires-Dist: jinja2 >=3.1.2
|
26
27
|
Requires-Dist: openai ==0.27.2
|
27
|
-
Requires-Dist: pyglove >=0.4.5.
|
28
|
+
Requires-Dist: pyglove >=0.4.5.dev20240423
|
28
29
|
Requires-Dist: python-magic >=0.4.27
|
29
30
|
Requires-Dist: requests >=2.31.0
|
30
31
|
Requires-Dist: termcolor ==1.1.0
|
@@ -0,0 +1,112 @@
|
|
1
|
+
langfun/__init__.py,sha256=YAbi2FfTfKT41KJAx1tSNoiole_YRJmcEk3oOoqFqOs,2128
|
2
|
+
langfun/core/__init__.py,sha256=6QEuXOZ9BXxm6TjpaMXuLwUBTYO3pkFDqn9QVBXyyPQ,4248
|
3
|
+
langfun/core/component.py,sha256=oxesbC0BoE_TbtxwW5x-BAZWxZyyJbuPiX5S38RqCv0,9909
|
4
|
+
langfun/core/component_test.py,sha256=uR-_Sz_42Jxc5qzLIB-f5_pXmNwnC01Xlbv5NOQSeSU,8021
|
5
|
+
langfun/core/concurrent.py,sha256=TRc49pJ3HQro2kb5FtcWkHjhBm8UcgE8RJybU5cU3-0,24537
|
6
|
+
langfun/core/concurrent_test.py,sha256=mwFMZhDUdppnDr7vDSTwcbMHwrdsIoKJwRYNtl4ZWL4,15185
|
7
|
+
langfun/core/console.py,sha256=bk5rNPNm9rMGW5YT2HixxU04p2umnoabn5SDz6Dqe88,2317
|
8
|
+
langfun/core/console_test.py,sha256=5SYJdxpJGLgdSSQqqMPoA1X6jpsLD8rgcyk-EgI65oE,1077
|
9
|
+
langfun/core/langfunc.py,sha256=RvIcRjIq0jWYRu1xim-FYe4HSrt97r3GMBO_PuagUmw,11060
|
10
|
+
langfun/core/langfunc_test.py,sha256=_mfARnakX3oji5HDigFSLMd6yQ2wma-2Mgbztwqn73g,8501
|
11
|
+
langfun/core/language_model.py,sha256=6wtY8RGbOymfo1PYzcYCfOlWuKQcSVFs5R1sFB4-QMQ,20202
|
12
|
+
langfun/core/language_model_test.py,sha256=T-itu7Li2smv2dkru0C0neCs2W4VJXlNTYahXU6jF54,19548
|
13
|
+
langfun/core/memory.py,sha256=f-asN1F7Vehgdn_fK84v73GrEUOxRtaW934keutTKjk,2416
|
14
|
+
langfun/core/message.py,sha256=QhvV9t5qaryPcruyxxcXi3gm9QDInkSldwTtK6sVJ3c,15734
|
15
|
+
langfun/core/message_test.py,sha256=Z23pUM5vPnDrYkIIibe2KL73D5HKur_awI0ut_EQFQA,9501
|
16
|
+
langfun/core/modality.py,sha256=HHFBRFbYfS95ZAoDHNM6rsZYgFFiBJkDYmVnteOH_9Q,3374
|
17
|
+
langfun/core/modality_test.py,sha256=6OUYzEo-AnX-WPjisI3jVU_cgx_JpfDyuGRbUmkoHU0,2396
|
18
|
+
langfun/core/natural_language.py,sha256=3ynSnaYQnjE60LIPK5fyMgdIjubnPYZwzGq4rWPeloE,1177
|
19
|
+
langfun/core/natural_language_test.py,sha256=LHGU_1ytbkGuSZQFIFP7vP3dBlcY4-A12fT6dbjUA0E,1424
|
20
|
+
langfun/core/sampling.py,sha256=vygWvgC8MFw0_AKNSmz-ywMXJYWf8cl0tI8QycvAmyI,5795
|
21
|
+
langfun/core/sampling_test.py,sha256=U7PANpMsl9E_pa4_Y4FzesSjcwg-u-LKHGCWSgv-8FY,3663
|
22
|
+
langfun/core/subscription.py,sha256=euawEuSZP-BHydaT-AQpfYFL0m5pWPGcW0upFhrojqc,10930
|
23
|
+
langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIcArBo,8717
|
24
|
+
langfun/core/template.py,sha256=UhNNGUDJ4StUhPBKzHmjym36khxHOGWGr9MDxBwgxQA,22284
|
25
|
+
langfun/core/template_test.py,sha256=Mbv0dFjboGCVvbDkHD-HacZnlCi8Ku2Hpf2UjdwGSNo,15464
|
26
|
+
langfun/core/text_formatting.py,sha256=ytjj7opnRJ6w-pkglL2CZUyfYDXLpNf65E42LBb31gc,5158
|
27
|
+
langfun/core/text_formatting_test.py,sha256=nyKC6tn2L4hPJiqQHgxcbQsJJi4A4Nbj8FiO8iT6B80,1514
|
28
|
+
langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
|
29
|
+
langfun/core/coding/python/__init__.py,sha256=MJ-vubliz-ebrZH3OBRKBwMi0S9-FrhGCp8YQLR6_I4,1776
|
30
|
+
langfun/core/coding/python/correction.py,sha256=a2aFUt9ocbXTCR6Z6OGNjQZDI1LfU0PBkSe7hJB8dEM,6589
|
31
|
+
langfun/core/coding/python/correction_test.py,sha256=yLqmQ9BPORsnREkrS10PnljEaLR3BoydTVeT3OGoqfU,3507
|
32
|
+
langfun/core/coding/python/errors.py,sha256=fX3Du63uGm25YFXW9D-bV2gntTdTAX3hBFtAnRlmg14,3166
|
33
|
+
langfun/core/coding/python/errors_test.py,sha256=_ZbWJCFIb-FkCK7K1zCuH8W3x_NFt-jNe3dfP8yqaD4,2323
|
34
|
+
langfun/core/coding/python/execution.py,sha256=egbM--NlV4Ya-Yr7VQdLY-Jx92C8lq3dsMc09ojtPxU,10096
|
35
|
+
langfun/core/coding/python/execution_test.py,sha256=lExY6GMLeuCsCKXgM2KbAPJ6kqSlfHmz3RG0-dqfVcI,7197
|
36
|
+
langfun/core/coding/python/generation.py,sha256=xivSeOKGN00HnG1TLuFhPfP-JyRuRrSELxVJW2ngqIQ,7750
|
37
|
+
langfun/core/coding/python/generation_test.py,sha256=54bgKr1DgzYFLoqR8bTn7Yjol0gPCuR6XvRltR4l6YM,2777
|
38
|
+
langfun/core/coding/python/parsing.py,sha256=uyvI1c5OLZhMVK2Oltkl3oJxSLlG0wadlpQcYPEE0-U,7097
|
39
|
+
langfun/core/coding/python/parsing_test.py,sha256=9vAWF484kWIm6JZq8NFiMgKUDhXV-deRl1QMmNERfAA,7386
|
40
|
+
langfun/core/coding/python/permissions.py,sha256=1QWGHvzL8MM0Ok_auQ9tURqZHtdOfJaDpBzZ29GUE-c,2544
|
41
|
+
langfun/core/coding/python/permissions_test.py,sha256=w5EDb8QxpxgJyZkojyzVWQvDfg366zn99-g__6TbPQ0,2699
|
42
|
+
langfun/core/eval/__init__.py,sha256=Evt-E4FEhZF2tXL6-byh_AyA7Cc_ZoGmvnN7vkAZedk,1898
|
43
|
+
langfun/core/eval/base.py,sha256=zcMPBKmcll5O08waEEnvmkEoXgcINhOat9rRJk8X8b4,74268
|
44
|
+
langfun/core/eval/base_test.py,sha256=cHOTIWVW4Dp8gKKIKcZrAcJ-w84j2GIozTzJoiAX7p4,26743
|
45
|
+
langfun/core/eval/matching.py,sha256=Y4vFoNTQEOwko6IA8l9OZ52-vt52e3VGmcTtvLA67wM,9782
|
46
|
+
langfun/core/eval/matching_test.py,sha256=f7iVyXH5KGJBWt4Wp14Bt9J3X59A6Ayfog9MbuFvPew,5532
|
47
|
+
langfun/core/eval/patching.py,sha256=R0s2eAd1m97exQt06dmUL0V_MBG0W2Hxg7fhNB7cXW0,3866
|
48
|
+
langfun/core/eval/patching_test.py,sha256=8kCd54Egjju22FMgtJuxEsrXkW8ifs-UUBHtrCG1L6w,4775
|
49
|
+
langfun/core/eval/scoring.py,sha256=1J7IATo-8FXUR0SBqk9icztHiM0lWkBFcWUo-vUURgQ,6376
|
50
|
+
langfun/core/eval/scoring_test.py,sha256=O8olHbrUEg60gMxwOkWzKBJZpZoUlmVnBANX5Se2SXM,4546
|
51
|
+
langfun/core/llms/__init__.py,sha256=C-NrcgFqf3_EP_dN8oADdckQ-rfPKZhsjeSf86kJpLk,3642
|
52
|
+
langfun/core/llms/anthropic.py,sha256=7W9YdPN3SlAFhAIQlihMkrpo7tTY_4NvD0KIlCrqcsk,8505
|
53
|
+
langfun/core/llms/anthropic_test.py,sha256=TMM30myyEhwF99Le4RvJEXOn8RYl0q1FRkt9Q9nl1jk,5540
|
54
|
+
langfun/core/llms/fake.py,sha256=_smsN_CsYbeWrtjpegEPwdAPV9mwaIuH_4oZGeXQwQI,2896
|
55
|
+
langfun/core/llms/fake_test.py,sha256=ipKfdOcuqVcJ8lDXVpnBVb9HHG0hAVkFkMoHpWjC2cI,7212
|
56
|
+
langfun/core/llms/google_genai.py,sha256=nDI_Adur_K458l6EWoiiAhzjfnjRSqfTiikdu7iLPyU,8808
|
57
|
+
langfun/core/llms/google_genai_test.py,sha256=_UcGTfl16-aDUlEWFC2W2F8y9jPUs53RBYA6MOCpGXw,7525
|
58
|
+
langfun/core/llms/groq.py,sha256=NaGItVL_pkOpqPpI4bPGU27xLFRoaeizZ49v2s-4ERs,7844
|
59
|
+
langfun/core/llms/groq_test.py,sha256=M6GtlrsOvDun_j-sR8cPh4W_moHWZNSTiThu3kuwbbc,5281
|
60
|
+
langfun/core/llms/llama_cpp.py,sha256=Y_KkMUf3Xfac49koMUtUslKl3h-HWp3-ntq7Jaa3bdo,2385
|
61
|
+
langfun/core/llms/llama_cpp_test.py,sha256=ZxC6defGd_HX9SFRU9U4cJiQnBKundbOrchbXuC1Z2M,1683
|
62
|
+
langfun/core/llms/openai.py,sha256=u2lqYcKFjFxLfWYD0KLT3YThqcoo66rWs3n0bcuSYBs,13286
|
63
|
+
langfun/core/llms/openai_test.py,sha256=asSA1sVy_7hnXioD_2HTxtSDpVTKBUO_EjZuyHpwbn0,14854
|
64
|
+
langfun/core/llms/vertexai.py,sha256=O2Lp-F4KJzvQSCjPV--sa6nMS9-GsLj2eiqA-1qGhWQ,9661
|
65
|
+
langfun/core/llms/vertexai_test.py,sha256=LBk4luL_N13ZejZebBzQ3tkfjxFhk7uBS4JjEpojJAo,7836
|
66
|
+
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
67
|
+
langfun/core/llms/cache/base.py,sha256=cFfYvOIUae842pncqCAsRvqXCk2AnAsRYVx0mcIoAeY,3338
|
68
|
+
langfun/core/llms/cache/in_memory.py,sha256=YfFyJEhLs73cUiB0ZfhMxYpdE8Iuxxw-dvMFwGHTSHw,4742
|
69
|
+
langfun/core/llms/cache/in_memory_test.py,sha256=D-n26h__rVXQO51WRFhRfq5sw1oifRLx2SvCQWuNEm8,8747
|
70
|
+
langfun/core/memories/__init__.py,sha256=HpghfZ-w1NQqzJXBx8Lz0daRhB2rcy2r9Xm491SBhC4,773
|
71
|
+
langfun/core/memories/conversation_history.py,sha256=c9amD8hCxGFiZuVAzkP0dOMWSp8L90uvwkOejjuBqO0,1835
|
72
|
+
langfun/core/memories/conversation_history_test.py,sha256=AaW8aNoFjxNusanwJDV0r3384Mg0eAweGmPx5DIkM0Y,2052
|
73
|
+
langfun/core/modalities/__init__.py,sha256=ldCbs1HHAHAJECNu19vppA0sWEidI40xBs4W1F_YOlo,1073
|
74
|
+
langfun/core/modalities/image.py,sha256=MUqRCQYyP7Gcf3dmzjU9J9ZEpfI08gAli9ZDmk0bJEk,1254
|
75
|
+
langfun/core/modalities/image_test.py,sha256=YxDRvC49Bjwyyndd_P7y6XjyS7dOft0Zewwxk-7q4kE,2301
|
76
|
+
langfun/core/modalities/mime.py,sha256=RatBOPqYEneYMe-lfgRxJp5T3yvgV6vBMNY8lK2WU8k,2421
|
77
|
+
langfun/core/modalities/mime_test.py,sha256=cVHxRvJ1QXC1SVhBmWkJdWGpL9Xl0UNfTQq6j0OGGL4,1881
|
78
|
+
langfun/core/modalities/video.py,sha256=bzJLeBDF6FIVHyrAvRqYcQq2pCLBqN-UIgX_f3lM3E0,1654
|
79
|
+
langfun/core/modalities/video_test.py,sha256=jYuI2m8S8zDCAVBPEUbbpP205dXAht90A2_PHWo4-r8,2039
|
80
|
+
langfun/core/structured/__init__.py,sha256=Qg1ocwsb60od8fJky3F3JAOhwjwT9WA7IX3C2j2s3zA,3707
|
81
|
+
langfun/core/structured/completion.py,sha256=skBxt6V_fv2TBUKnzFgnPMbVY8HSYn8sY04MLok2yvs,7299
|
82
|
+
langfun/core/structured/completion_test.py,sha256=MYxEzeScC3gFVujvrMMboBF5nh-QiVLwGgqAV3oaFUQ,19273
|
83
|
+
langfun/core/structured/description.py,sha256=SXW4MJvshFjbR-0gw6rE21o6WXq12UlRXawvDBXMZFA,5211
|
84
|
+
langfun/core/structured/description_test.py,sha256=UtZGjSFUaQ6130t1E5tcL7ODu0xIefkapb53TbnqsK8,7362
|
85
|
+
langfun/core/structured/function_generation.py,sha256=pFgS3vcRAWiuFBol2x5Eeip3XqoudONsOpeJpWyjT3s,7479
|
86
|
+
langfun/core/structured/function_generation_test.py,sha256=ZJI-aaGgWWszn92u7h5IZ9Pl70N2DgAGGJrIxPzsvwg,10065
|
87
|
+
langfun/core/structured/mapping.py,sha256=V2EI53KwhXxqcoH2ouhuei8aYWny0ml_FwMTiS7Zr9M,12253
|
88
|
+
langfun/core/structured/mapping_test.py,sha256=PiXklMeIa8L6KtMi3ju7J9Y39gZy0hIGz-Oeq4A_7XE,3835
|
89
|
+
langfun/core/structured/parsing.py,sha256=keoVqEfzAbdULh6GawWFsTQzU91MzJXYFZjXGXLaD8g,11492
|
90
|
+
langfun/core/structured/parsing_test.py,sha256=34wDrXaQ-EYhJLfDL8mX9K53oQMSzh5pVYdKjnESmK8,20895
|
91
|
+
langfun/core/structured/prompting.py,sha256=cswl9c93edsYnXsZQmMzPpmqOuKnBzbgebTYBbSxwzo,8815
|
92
|
+
langfun/core/structured/prompting_test.py,sha256=rddf5qHN8Gm_JaNMmytwiVEBm-eZVJFLQO4GljUgR44,21700
|
93
|
+
langfun/core/structured/schema.py,sha256=Zy9y6Vq9DrFwcuP5o5VL_PvMCmzavF-nuDqyviBnaxk,25818
|
94
|
+
langfun/core/structured/schema_generation.py,sha256=U3nRQsqmMZg_qIVDh2fiY3K4JLfsAL1LcKzIFP1iXFg,5316
|
95
|
+
langfun/core/structured/schema_generation_test.py,sha256=RM9s71kMNg2jTePwInkiW9fK1ACN37eyPeF8OII-0zw,2950
|
96
|
+
langfun/core/structured/schema_test.py,sha256=NgQK1zGSliZVx_Af6gDBTqQxXRHvmAvGARv4dUs8IbI,23078
|
97
|
+
langfun/core/structured/scoring.py,sha256=5DsMNrWKf98ZYCEkxA4-HvA62nMSNBs9DC5m8dYL7Cs,2442
|
98
|
+
langfun/core/structured/scoring_test.py,sha256=39_dw6p_FkoqeUccO67yIqos-MccAWezoozS21i8mi0,1732
|
99
|
+
langfun/core/templates/__init__.py,sha256=bO0eMsVJbi7sxEB2YlInKRQ2EVP-RyyKUwcD-8msuN4,927
|
100
|
+
langfun/core/templates/completion.py,sha256=mUqZHOEV3ag6-A08XghpeEltcrBvCDxXP004eDDfeag,1931
|
101
|
+
langfun/core/templates/completion_test.py,sha256=vGnjnM38UHyVDUyaUYtmp20s9KBGOdbPVsX-H-ET11E,1636
|
102
|
+
langfun/core/templates/conversation.py,sha256=HVih0atzCFpYbE-2bmO1VewhKGyKYAoCty-IZYCjf00,2589
|
103
|
+
langfun/core/templates/conversation_test.py,sha256=RryYyIhfc34dLWOs6GfPQ8HU8mXpKGL87UgVkysfIMo,3911
|
104
|
+
langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fikKhwhzwhpKI,1460
|
105
|
+
langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
|
106
|
+
langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
|
107
|
+
langfun/core/templates/selfplay_test.py,sha256=DYVrkk7uNKCqJGEHH31HssU2BPuMItU1vJLzfcXIlYg,2156
|
108
|
+
langfun-0.0.2.dev20240511.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
109
|
+
langfun-0.0.2.dev20240511.dist-info/METADATA,sha256=hewa_t_bln4aeirKRZHR1bUwBtvavOv7jNbNU2JUAZ8,3452
|
110
|
+
langfun-0.0.2.dev20240511.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
111
|
+
langfun-0.0.2.dev20240511.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
112
|
+
langfun-0.0.2.dev20240511.dist-info/RECORD,,
|
@@ -1,102 +0,0 @@
|
|
1
|
-
langfun/__init__.py,sha256=PqX3u18BC0szYIMu00j-RKxvwkNPwXtAFZ-96oxrQ0M,1841
|
2
|
-
langfun/core/__init__.py,sha256=sVcPl89lWYHQ1cUoaLaM8dErCovugJo5e2F3A_94Q3Y,4192
|
3
|
-
langfun/core/component.py,sha256=VRPfDB_2jEnxcB3-HoiVjG4ID-SMenNPIsytb0uXMPg,9674
|
4
|
-
langfun/core/component_test.py,sha256=VAPd6V_-odAe8rBvesW3ogYDd6OSqRq4FaPhfgOM4Zg,7949
|
5
|
-
langfun/core/concurrent.py,sha256=TRc49pJ3HQro2kb5FtcWkHjhBm8UcgE8RJybU5cU3-0,24537
|
6
|
-
langfun/core/concurrent_test.py,sha256=mwFMZhDUdppnDr7vDSTwcbMHwrdsIoKJwRYNtl4ZWL4,15185
|
7
|
-
langfun/core/console.py,sha256=bk5rNPNm9rMGW5YT2HixxU04p2umnoabn5SDz6Dqe88,2317
|
8
|
-
langfun/core/console_test.py,sha256=5SYJdxpJGLgdSSQqqMPoA1X6jpsLD8rgcyk-EgI65oE,1077
|
9
|
-
langfun/core/langfunc.py,sha256=WXdTc3QsmGD_n80KD9dFRr5MHpGZ9E_y_Rhtk4t9-3w,11852
|
10
|
-
langfun/core/langfunc_test.py,sha256=dFNJoEXExIkrAJ9_PSWh_iRQoR4Gmp2VOZ_ve61DSHM,8339
|
11
|
-
langfun/core/language_model.py,sha256=jPuFfjnRCnbT8po-CBPgmXoa09Yfk5_21snCXURqaKU,17011
|
12
|
-
langfun/core/language_model_test.py,sha256=q7pNdirVWfkQXPA3taCGnyLB2NNs1KqX4JjjnoJvFOQ,11365
|
13
|
-
langfun/core/memory.py,sha256=f-asN1F7Vehgdn_fK84v73GrEUOxRtaW934keutTKjk,2416
|
14
|
-
langfun/core/message.py,sha256=QhvV9t5qaryPcruyxxcXi3gm9QDInkSldwTtK6sVJ3c,15734
|
15
|
-
langfun/core/message_test.py,sha256=Z23pUM5vPnDrYkIIibe2KL73D5HKur_awI0ut_EQFQA,9501
|
16
|
-
langfun/core/modality.py,sha256=HHFBRFbYfS95ZAoDHNM6rsZYgFFiBJkDYmVnteOH_9Q,3374
|
17
|
-
langfun/core/modality_test.py,sha256=6OUYzEo-AnX-WPjisI3jVU_cgx_JpfDyuGRbUmkoHU0,2396
|
18
|
-
langfun/core/natural_language.py,sha256=3ynSnaYQnjE60LIPK5fyMgdIjubnPYZwzGq4rWPeloE,1177
|
19
|
-
langfun/core/natural_language_test.py,sha256=LHGU_1ytbkGuSZQFIFP7vP3dBlcY4-A12fT6dbjUA0E,1424
|
20
|
-
langfun/core/sampling.py,sha256=vygWvgC8MFw0_AKNSmz-ywMXJYWf8cl0tI8QycvAmyI,5795
|
21
|
-
langfun/core/sampling_test.py,sha256=U7PANpMsl9E_pa4_Y4FzesSjcwg-u-LKHGCWSgv-8FY,3663
|
22
|
-
langfun/core/subscription.py,sha256=euawEuSZP-BHydaT-AQpfYFL0m5pWPGcW0upFhrojqc,10930
|
23
|
-
langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIcArBo,8717
|
24
|
-
langfun/core/template.py,sha256=zVD8dAsXFfgF25aKh2WqSuCEHVqriCC-4tLbQqTMa2w,17662
|
25
|
-
langfun/core/template_test.py,sha256=1hDdYfvXJVoslTUudh3WhxU7VnDSiIz6MkxPfmuHKAY,13572
|
26
|
-
langfun/core/text_formatting.py,sha256=ytjj7opnRJ6w-pkglL2CZUyfYDXLpNf65E42LBb31gc,5158
|
27
|
-
langfun/core/text_formatting_test.py,sha256=nyKC6tn2L4hPJiqQHgxcbQsJJi4A4Nbj8FiO8iT6B80,1514
|
28
|
-
langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
|
29
|
-
langfun/core/coding/python/__init__.py,sha256=MJ-vubliz-ebrZH3OBRKBwMi0S9-FrhGCp8YQLR6_I4,1776
|
30
|
-
langfun/core/coding/python/correction.py,sha256=uuQmZCrAl0EA9etIUmn2-FZ-ge8iNcjOAAlm-WgkYfo,6776
|
31
|
-
langfun/core/coding/python/correction_test.py,sha256=yLqmQ9BPORsnREkrS10PnljEaLR3BoydTVeT3OGoqfU,3507
|
32
|
-
langfun/core/coding/python/errors.py,sha256=fX3Du63uGm25YFXW9D-bV2gntTdTAX3hBFtAnRlmg14,3166
|
33
|
-
langfun/core/coding/python/errors_test.py,sha256=_ZbWJCFIb-FkCK7K1zCuH8W3x_NFt-jNe3dfP8yqaD4,2323
|
34
|
-
langfun/core/coding/python/execution.py,sha256=egbM--NlV4Ya-Yr7VQdLY-Jx92C8lq3dsMc09ojtPxU,10096
|
35
|
-
langfun/core/coding/python/execution_test.py,sha256=lExY6GMLeuCsCKXgM2KbAPJ6kqSlfHmz3RG0-dqfVcI,7197
|
36
|
-
langfun/core/coding/python/generation.py,sha256=xivSeOKGN00HnG1TLuFhPfP-JyRuRrSELxVJW2ngqIQ,7750
|
37
|
-
langfun/core/coding/python/generation_test.py,sha256=54bgKr1DgzYFLoqR8bTn7Yjol0gPCuR6XvRltR4l6YM,2777
|
38
|
-
langfun/core/coding/python/parsing.py,sha256=uyvI1c5OLZhMVK2Oltkl3oJxSLlG0wadlpQcYPEE0-U,7097
|
39
|
-
langfun/core/coding/python/parsing_test.py,sha256=9vAWF484kWIm6JZq8NFiMgKUDhXV-deRl1QMmNERfAA,7386
|
40
|
-
langfun/core/coding/python/permissions.py,sha256=1QWGHvzL8MM0Ok_auQ9tURqZHtdOfJaDpBzZ29GUE-c,2544
|
41
|
-
langfun/core/coding/python/permissions_test.py,sha256=w5EDb8QxpxgJyZkojyzVWQvDfg366zn99-g__6TbPQ0,2699
|
42
|
-
langfun/core/eval/__init__.py,sha256=iDA2OcJ3kR6ixZizXIY3N9LsjkaVrfTbSClTiSP8ekY,1291
|
43
|
-
langfun/core/eval/base.py,sha256=dLDWAYLHnLX7CyvMTBcditLFIuq-tUvGoPX1vT65GJQ,54730
|
44
|
-
langfun/core/eval/base_test.py,sha256=8MOum0DWMEm2-NpwmFgcqmlqEmuWYF5MesrCXTySylg,21083
|
45
|
-
langfun/core/eval/matching.py,sha256=g2yuBb4FeOlAlB10hqdWvaIg4QVQlJbiViRDcD2Y8go,9567
|
46
|
-
langfun/core/eval/matching_test.py,sha256=jFrNOaHteNo7wxCwc6w_mGylM0VHwezAcvfaZANKKmA,4898
|
47
|
-
langfun/core/eval/scoring.py,sha256=mshqbV_WM0zcp15TSR32ACMBDymlsbf6YH06PPx1Tw0,6139
|
48
|
-
langfun/core/eval/scoring_test.py,sha256=3SWvRmrFn1ZrSE9mhA9ApcPg6e9HVXQ58xhui1HPQmI,4024
|
49
|
-
langfun/core/llms/__init__.py,sha256=gROJ8AjMq_ebXFcEfsyzYGCS6NsGfzf9d43nLu_TIdw,2504
|
50
|
-
langfun/core/llms/fake.py,sha256=dVzOrW27RZ1p3DdQoRCRZs_vfoQcTcNrlWxia7oqmvw,2499
|
51
|
-
langfun/core/llms/fake_test.py,sha256=Qk_Yoi4Z7P9o6f8Q_BZkaSlvxH89ZVsDxnVIbSBRBXk,3555
|
52
|
-
langfun/core/llms/google_genai.py,sha256=n8zyJwh9UCTgb6-8LyvmjVNFGZQ4-zfzZ0ulkhHAnR8,8624
|
53
|
-
langfun/core/llms/google_genai_test.py,sha256=MPU4eLd9CDQhjUeaNO_2VFirg0ZJOwNaMtgm1X-hICc,7412
|
54
|
-
langfun/core/llms/llama_cpp.py,sha256=sJ9TOismqwGJ7QhgdYknWTEkqrbeZpWYc_nClOh36NU,2320
|
55
|
-
langfun/core/llms/llama_cpp_test.py,sha256=ZxC6defGd_HX9SFRU9U4cJiQnBKundbOrchbXuC1Z2M,1683
|
56
|
-
langfun/core/llms/openai.py,sha256=BV8NWjB1b6A1X4Kff8Pub5AECodsngZnXqeBvRIHFM0,11331
|
57
|
-
langfun/core/llms/openai_test.py,sha256=yfw7A-4Zo9u1cIkAMk39evE-tO7z6isNYTXiSnJXDQw,7599
|
58
|
-
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
59
|
-
langfun/core/llms/cache/base.py,sha256=cFfYvOIUae842pncqCAsRvqXCk2AnAsRYVx0mcIoAeY,3338
|
60
|
-
langfun/core/llms/cache/in_memory.py,sha256=YfFyJEhLs73cUiB0ZfhMxYpdE8Iuxxw-dvMFwGHTSHw,4742
|
61
|
-
langfun/core/llms/cache/in_memory_test.py,sha256=WYLg_SlUdkUxIdBYnbksMqwVLFuzcNLsPTEJSQavtr0,8459
|
62
|
-
langfun/core/memories/__init__.py,sha256=HpghfZ-w1NQqzJXBx8Lz0daRhB2rcy2r9Xm491SBhC4,773
|
63
|
-
langfun/core/memories/conversation_history.py,sha256=c9amD8hCxGFiZuVAzkP0dOMWSp8L90uvwkOejjuBqO0,1835
|
64
|
-
langfun/core/memories/conversation_history_test.py,sha256=AaW8aNoFjxNusanwJDV0r3384Mg0eAweGmPx5DIkM0Y,2052
|
65
|
-
langfun/core/modalities/__init__.py,sha256=ldCbs1HHAHAJECNu19vppA0sWEidI40xBs4W1F_YOlo,1073
|
66
|
-
langfun/core/modalities/image.py,sha256=zNpLHwJi6PJMeeAcVQG6vn0oYIbilTuJq6xu-TvrArM,1358
|
67
|
-
langfun/core/modalities/image_test.py,sha256=YxDRvC49Bjwyyndd_P7y6XjyS7dOft0Zewwxk-7q4kE,2301
|
68
|
-
langfun/core/modalities/mime.py,sha256=wVfaYflhGz1W4v3m972rAplW3OGOFtjFpHDYIaUD5D0,2238
|
69
|
-
langfun/core/modalities/mime_test.py,sha256=cVHxRvJ1QXC1SVhBmWkJdWGpL9Xl0UNfTQq6j0OGGL4,1881
|
70
|
-
langfun/core/modalities/video.py,sha256=5-sIlzXb_ZY84RMFcpVD9ysP9GbcwbdKaZOEm3jECtc,1469
|
71
|
-
langfun/core/modalities/video_test.py,sha256=jYuI2m8S8zDCAVBPEUbbpP205dXAht90A2_PHWo4-r8,2039
|
72
|
-
langfun/core/structured/__init__.py,sha256=SpObW-HKpyKvkLlX8FV5ixz7CRm098j2aGfOguM3AUI,3462
|
73
|
-
langfun/core/structured/completion.py,sha256=skBxt6V_fv2TBUKnzFgnPMbVY8HSYn8sY04MLok2yvs,7299
|
74
|
-
langfun/core/structured/completion_test.py,sha256=98UCgA4gzfp6H6HgP2s2kcKs25YH3k4Nxj1rgAvmVBw,19249
|
75
|
-
langfun/core/structured/description.py,sha256=SXW4MJvshFjbR-0gw6rE21o6WXq12UlRXawvDBXMZFA,5211
|
76
|
-
langfun/core/structured/description_test.py,sha256=UtZGjSFUaQ6130t1E5tcL7ODu0xIefkapb53TbnqsK8,7362
|
77
|
-
langfun/core/structured/mapping.py,sha256=m7i80GU3vfDZXw4TTnidWTS3K-c1H8JNX9KcoMw4E4s,10373
|
78
|
-
langfun/core/structured/mapping_test.py,sha256=07DDCGbwytQHSMm7fCi5-Ly-JNgdV4ubHZq0wthX4A4,3338
|
79
|
-
langfun/core/structured/parsing.py,sha256=keoVqEfzAbdULh6GawWFsTQzU91MzJXYFZjXGXLaD8g,11492
|
80
|
-
langfun/core/structured/parsing_test.py,sha256=2_Uf3LYNRON1-5ysEr75xiG_cAxR3ZiixSfvUQu6mOQ,20846
|
81
|
-
langfun/core/structured/prompting.py,sha256=0xRPC0K_RaFRv-j52x8_-1n1eRFSomJEpdZApVXsCV0,6902
|
82
|
-
langfun/core/structured/prompting_test.py,sha256=SwoYbPyKhUT1H2QbqHvl93biCiE9Ttn1aWixoHH-v9Y,19129
|
83
|
-
langfun/core/structured/schema.py,sha256=CuRXOBjoK8rv5b281-w2o7nWQ7ox2YX5kkq2dOk0Ry8,25020
|
84
|
-
langfun/core/structured/schema_generation.py,sha256=U3nRQsqmMZg_qIVDh2fiY3K4JLfsAL1LcKzIFP1iXFg,5316
|
85
|
-
langfun/core/structured/schema_generation_test.py,sha256=cfZyP0gHno2fXy_c9vsVdvHmqKQSfuyUsCtfO3JFmYQ,2945
|
86
|
-
langfun/core/structured/schema_test.py,sha256=hLhwbUaBtTJMG4c-q21rFUksTtI-jP_oNIyr5_S-0yo,22472
|
87
|
-
langfun/core/structured/scoring.py,sha256=a3vfGnqf-DOWjD07MF54GCZTO_R1RTxTDVPzerXnU0s,2325
|
88
|
-
langfun/core/structured/scoring_test.py,sha256=TznLMl0x9QxzmhHz_3Vr44VOXuvFnUSeRQVhu33W5cA,1437
|
89
|
-
langfun/core/templates/__init__.py,sha256=bO0eMsVJbi7sxEB2YlInKRQ2EVP-RyyKUwcD-8msuN4,927
|
90
|
-
langfun/core/templates/completion.py,sha256=mUqZHOEV3ag6-A08XghpeEltcrBvCDxXP004eDDfeag,1931
|
91
|
-
langfun/core/templates/completion_test.py,sha256=vGnjnM38UHyVDUyaUYtmp20s9KBGOdbPVsX-H-ET11E,1636
|
92
|
-
langfun/core/templates/conversation.py,sha256=HVih0atzCFpYbE-2bmO1VewhKGyKYAoCty-IZYCjf00,2589
|
93
|
-
langfun/core/templates/conversation_test.py,sha256=RryYyIhfc34dLWOs6GfPQ8HU8mXpKGL87UgVkysfIMo,3911
|
94
|
-
langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fikKhwhzwhpKI,1460
|
95
|
-
langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
|
96
|
-
langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
|
97
|
-
langfun/core/templates/selfplay_test.py,sha256=IB5rWbjK_9CTkqEo1BclQPzFAKcIiusJckH8J19HFgI,2096
|
98
|
-
langfun-0.0.2.dev20240330.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
99
|
-
langfun-0.0.2.dev20240330.dist-info/METADATA,sha256=MWG18bI12t0f33e_SMBnfGuTXkvSxE5B9HctsWZRzos,3405
|
100
|
-
langfun-0.0.2.dev20240330.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
101
|
-
langfun-0.0.2.dev20240330.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
102
|
-
langfun-0.0.2.dev20240330.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|