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.

Files changed (59) hide show
  1. langfun/__init__.py +7 -0
  2. langfun/core/__init__.py +1 -0
  3. langfun/core/coding/python/correction.py +0 -7
  4. langfun/core/component.py +6 -0
  5. langfun/core/component_test.py +1 -0
  6. langfun/core/eval/__init__.py +15 -0
  7. langfun/core/eval/base.py +665 -95
  8. langfun/core/eval/base_test.py +224 -53
  9. langfun/core/eval/matching.py +48 -30
  10. langfun/core/eval/matching_test.py +25 -3
  11. langfun/core/eval/patching.py +130 -0
  12. langfun/core/eval/patching_test.py +170 -0
  13. langfun/core/eval/scoring.py +19 -10
  14. langfun/core/eval/scoring_test.py +21 -3
  15. langfun/core/langfunc.py +1 -22
  16. langfun/core/langfunc_test.py +10 -4
  17. langfun/core/language_model.py +130 -24
  18. langfun/core/language_model_test.py +249 -26
  19. langfun/core/llms/__init__.py +27 -2
  20. langfun/core/llms/anthropic.py +263 -0
  21. langfun/core/llms/anthropic_test.py +167 -0
  22. langfun/core/llms/cache/in_memory_test.py +37 -28
  23. langfun/core/llms/fake.py +34 -25
  24. langfun/core/llms/fake_test.py +122 -11
  25. langfun/core/llms/google_genai.py +8 -0
  26. langfun/core/llms/google_genai_test.py +8 -3
  27. langfun/core/llms/groq.py +260 -0
  28. langfun/core/llms/groq_test.py +170 -0
  29. langfun/core/llms/llama_cpp.py +3 -1
  30. langfun/core/llms/openai.py +100 -81
  31. langfun/core/llms/openai_test.py +287 -60
  32. langfun/core/llms/vertexai.py +291 -0
  33. langfun/core/llms/vertexai_test.py +233 -0
  34. langfun/core/modalities/image.py +1 -3
  35. langfun/core/modalities/mime.py +6 -0
  36. langfun/core/modalities/video.py +6 -5
  37. langfun/core/structured/__init__.py +5 -0
  38. langfun/core/structured/completion_test.py +2 -2
  39. langfun/core/structured/function_generation.py +245 -0
  40. langfun/core/structured/function_generation_test.py +329 -0
  41. langfun/core/structured/mapping.py +61 -3
  42. langfun/core/structured/mapping_test.py +17 -0
  43. langfun/core/structured/parsing_test.py +18 -13
  44. langfun/core/structured/prompting.py +61 -12
  45. langfun/core/structured/prompting_test.py +122 -12
  46. langfun/core/structured/schema.py +38 -6
  47. langfun/core/structured/schema_generation_test.py +2 -2
  48. langfun/core/structured/schema_test.py +36 -7
  49. langfun/core/structured/scoring.py +4 -1
  50. langfun/core/structured/scoring_test.py +6 -0
  51. langfun/core/template.py +147 -11
  52. langfun/core/template_test.py +75 -0
  53. langfun/core/templates/selfplay_test.py +6 -2
  54. {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/METADATA +3 -2
  55. langfun-0.0.2.dev20240511.dist-info/RECORD +112 -0
  56. langfun-0.0.2.dev20240330.dist-info/RECORD +0 -102
  57. {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/LICENSE +0 -0
  58. {langfun-0.0.2.dev20240330.dist-info → langfun-0.0.2.dev20240511.dist-info}/WHEEL +0 -0
  59. {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
- # Fill the variables for rendering the template as metadata.
310
- message = message_cls(
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.
@@ -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(g(), lf.AIMessage('10', score=0.0, logprobs=None))
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(g(), lf.AIMessage('2', score=0.0, logprobs=None))
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.dev20240330
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.dev20240323
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,,