langfun 0.1.2.dev202411110804__py3-none-any.whl → 0.1.2.dev202411150804__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.
- langfun/__init__.py +4 -0
- langfun/core/agentic/__init__.py +30 -0
- langfun/core/agentic/action.py +250 -0
- langfun/core/agentic/action_eval.py +150 -0
- langfun/core/agentic/action_eval_test.py +109 -0
- langfun/core/agentic/action_test.py +84 -0
- langfun/core/console.py +10 -2
- langfun/core/console_test.py +17 -0
- langfun/core/eval/__init__.py +2 -0
- langfun/core/eval/v2/__init__.py +38 -0
- langfun/core/eval/v2/checkpointing.py +135 -0
- langfun/core/eval/v2/checkpointing_test.py +89 -0
- langfun/core/eval/v2/evaluation.py +627 -0
- langfun/core/eval/v2/evaluation_test.py +156 -0
- langfun/core/eval/v2/example.py +295 -0
- langfun/core/eval/v2/example_test.py +114 -0
- langfun/core/eval/v2/experiment.py +949 -0
- langfun/core/eval/v2/experiment_test.py +304 -0
- langfun/core/eval/v2/metric_values.py +156 -0
- langfun/core/eval/v2/metric_values_test.py +80 -0
- langfun/core/eval/v2/metrics.py +357 -0
- langfun/core/eval/v2/metrics_test.py +203 -0
- langfun/core/eval/v2/progress.py +348 -0
- langfun/core/eval/v2/progress_test.py +82 -0
- langfun/core/eval/v2/progress_tracking.py +209 -0
- langfun/core/eval/v2/progress_tracking_test.py +56 -0
- langfun/core/eval/v2/reporting.py +144 -0
- langfun/core/eval/v2/reporting_test.py +41 -0
- langfun/core/eval/v2/runners.py +417 -0
- langfun/core/eval/v2/runners_test.py +311 -0
- langfun/core/eval/v2/test_helper.py +80 -0
- langfun/core/language_model.py +122 -11
- langfun/core/language_model_test.py +97 -4
- langfun/core/llms/__init__.py +4 -0
- langfun/core/llms/anthropic.py +12 -0
- langfun/core/llms/compositional.py +101 -0
- langfun/core/llms/compositional_test.py +73 -0
- langfun/core/llms/vertexai.py +4 -4
- langfun/core/llms/vertexai_test.py +8 -2
- {langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/METADATA +1 -1
- {langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/RECORD +44 -15
- {langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/WHEEL +1 -1
- {langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/LICENSE +0 -0
- {langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/top_level.txt +0 -0
langfun/core/llms/__init__.py
CHANGED
@@ -24,6 +24,9 @@ from langfun.core.llms.fake import StaticMapping
|
|
24
24
|
from langfun.core.llms.fake import StaticResponse
|
25
25
|
from langfun.core.llms.fake import StaticSequence
|
26
26
|
|
27
|
+
# Compositional models.
|
28
|
+
from langfun.core.llms.compositional import RandomChoice
|
29
|
+
|
27
30
|
# REST-based models.
|
28
31
|
from langfun.core.llms.rest import REST
|
29
32
|
|
@@ -97,6 +100,7 @@ from langfun.core.llms.anthropic import Claude3Sonnet
|
|
97
100
|
from langfun.core.llms.anthropic import Claude3Haiku
|
98
101
|
from langfun.core.llms.anthropic import VertexAIAnthropic
|
99
102
|
from langfun.core.llms.anthropic import VertexAIClaude3_5_Sonnet_20241022
|
103
|
+
from langfun.core.llms.anthropic import VertexAIClaude3_5_Sonnet_20240620
|
100
104
|
from langfun.core.llms.anthropic import VertexAIClaude3_5_Haiku_20241022
|
101
105
|
|
102
106
|
from langfun.core.llms.groq import Groq
|
langfun/core/llms/anthropic.py
CHANGED
@@ -53,6 +53,13 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
53
53
|
cost_per_1k_input_tokens=0.003,
|
54
54
|
cost_per_1k_output_tokens=0.015,
|
55
55
|
),
|
56
|
+
'claude-3-5-sonnet@20240620': pg.Dict(
|
57
|
+
max_tokens=8192,
|
58
|
+
rpm=1000,
|
59
|
+
tpm=100000,
|
60
|
+
cost_per_1k_input_tokens=0.003,
|
61
|
+
cost_per_1k_output_tokens=0.015,
|
62
|
+
),
|
56
63
|
'claude-3-5-haiku@20241022': pg.Dict(
|
57
64
|
max_tokens=8192,
|
58
65
|
rpm=1000,
|
@@ -459,6 +466,11 @@ class VertexAIClaude3_5_Sonnet_20241022(VertexAIAnthropic): # pylint: disable=i
|
|
459
466
|
model = 'claude-3-5-sonnet-v2@20241022'
|
460
467
|
|
461
468
|
|
469
|
+
class VertexAIClaude3_5_Sonnet_20240620(VertexAIAnthropic): # pylint: disable=invalid-name
|
470
|
+
"""Anthropic's Claude 3.5 Sonnet model on VertexAI."""
|
471
|
+
model = 'claude-3-5-sonnet@20240620'
|
472
|
+
|
473
|
+
|
462
474
|
class VertexAIClaude3_5_Haiku_20241022(VertexAIAnthropic): # pylint: disable=invalid-name
|
463
475
|
"""Anthropic's Claude 3.5 Haiku model on VertexAI."""
|
464
476
|
model = 'claude-3-5-haiku@20241022'
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# Copyright 2024 The Langfun Authors
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Compositions of different LLM models."""
|
15
|
+
import random
|
16
|
+
from typing import Annotated
|
17
|
+
|
18
|
+
import langfun.core as lf
|
19
|
+
import pyglove as pg
|
20
|
+
|
21
|
+
|
22
|
+
@pg.use_init_args(['candidates', 'seed'])
|
23
|
+
class RandomChoice(lf.LanguageModel):
|
24
|
+
"""Random choice of a list of LLM models."""
|
25
|
+
|
26
|
+
candidates: Annotated[
|
27
|
+
list[lf.LanguageModel],
|
28
|
+
(
|
29
|
+
'A list of LLMs as candidates to choose from.'
|
30
|
+
)
|
31
|
+
]
|
32
|
+
|
33
|
+
seed: Annotated[
|
34
|
+
int,
|
35
|
+
(
|
36
|
+
'The random seed to use for the random choice.'
|
37
|
+
)
|
38
|
+
] = 0
|
39
|
+
|
40
|
+
def _on_bound(self):
|
41
|
+
super()._on_bound()
|
42
|
+
self._rand = random.Random(self.seed)
|
43
|
+
# Applying sampling options to all candidates.
|
44
|
+
parent_non_default = self.sampling_options.sym_nondefault()
|
45
|
+
if parent_non_default:
|
46
|
+
for c in self.candidates:
|
47
|
+
c.sampling_options.rebind(
|
48
|
+
parent_non_default, notify_parents=False, raise_on_no_change=False
|
49
|
+
)
|
50
|
+
|
51
|
+
@property
|
52
|
+
def model_id(self) -> str:
|
53
|
+
model_ids = ', '.join(
|
54
|
+
sorted(c.model_id for c in self.candidates)
|
55
|
+
)
|
56
|
+
return f'RandomChoice({model_ids})'
|
57
|
+
|
58
|
+
@property
|
59
|
+
def resource_id(self) -> str:
|
60
|
+
resource_ids = ', '.join(
|
61
|
+
sorted(c.resource_id for c in self.candidates)
|
62
|
+
)
|
63
|
+
return f'RandomChoice({resource_ids})'
|
64
|
+
|
65
|
+
def _select_lm(self) -> lf.LanguageModel:
|
66
|
+
"""Selects a random LLM from the candidates."""
|
67
|
+
return self._rand.choice(self.candidates)
|
68
|
+
|
69
|
+
def sample(
|
70
|
+
self,
|
71
|
+
prompts: list[str | lf.Message],
|
72
|
+
*,
|
73
|
+
cache_seed: int = 0,
|
74
|
+
**kwargs,
|
75
|
+
) -> list[lf.LMSamplingResult]:
|
76
|
+
return self._select_lm().sample(
|
77
|
+
prompts, cache_seed=cache_seed, **kwargs
|
78
|
+
)
|
79
|
+
|
80
|
+
def __call__(
|
81
|
+
self, prompt: lf.Message, *, cache_seed: int = 0, **kwargs
|
82
|
+
) -> lf.Message:
|
83
|
+
return self._select_lm()(prompt, cache_seed=cache_seed, **kwargs)
|
84
|
+
|
85
|
+
def score(
|
86
|
+
self,
|
87
|
+
prompt: str | lf.Message | list[lf.Message],
|
88
|
+
completions: list[str | lf.Message],
|
89
|
+
**kwargs,
|
90
|
+
) -> list[lf.LMScoringResult]:
|
91
|
+
return self._select_lm().score(prompt, completions, **kwargs)
|
92
|
+
|
93
|
+
def tokenize(
|
94
|
+
self,
|
95
|
+
prompt: str | lf.Message,
|
96
|
+
**kwargs,
|
97
|
+
) -> list[tuple[str | bytes, int]]:
|
98
|
+
return self._select_lm().tokenize(prompt, **kwargs)
|
99
|
+
|
100
|
+
def _sample(self, *arg, **kwargs):
|
101
|
+
assert False, 'Should never trigger.'
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2024 The Langfun Authors
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Tests for compositional models."""
|
15
|
+
import unittest
|
16
|
+
|
17
|
+
import langfun.core as lf
|
18
|
+
from langfun.core.llms import compositional
|
19
|
+
from langfun.core.llms import fake
|
20
|
+
|
21
|
+
|
22
|
+
class RandomChoiceTest(unittest.TestCase):
|
23
|
+
|
24
|
+
def test_basic(self):
|
25
|
+
lm = compositional.RandomChoice([
|
26
|
+
fake.StaticResponse('hi'),
|
27
|
+
fake.StaticSequence(['hello', 'world'])
|
28
|
+
])
|
29
|
+
self.assertEqual(
|
30
|
+
lm.model_id,
|
31
|
+
'RandomChoice(StaticResponse, StaticSequence)'
|
32
|
+
)
|
33
|
+
self.assertEqual(
|
34
|
+
lm.resource_id,
|
35
|
+
'RandomChoice(StaticResponse, StaticSequence)'
|
36
|
+
)
|
37
|
+
self.assertEqual(
|
38
|
+
[lm('a'), lm('b'), lm('c')],
|
39
|
+
['hello', 'world', 'hi']
|
40
|
+
)
|
41
|
+
lm = lm.clone()
|
42
|
+
self.assertEqual(
|
43
|
+
[
|
44
|
+
x.samples[0].response for x in [
|
45
|
+
lm.sample(['a'])[0],
|
46
|
+
lm.sample(['b'])[0],
|
47
|
+
lm.sample(['c'])[0],
|
48
|
+
]
|
49
|
+
],
|
50
|
+
['hello', 'world', 'hi']
|
51
|
+
)
|
52
|
+
self.assertEqual(
|
53
|
+
lm.score('hello', ['world']),
|
54
|
+
[lf.LMScoringResult(0.0)]
|
55
|
+
)
|
56
|
+
self.assertEqual(
|
57
|
+
lm.tokenize('hello'),
|
58
|
+
[('hello', 0)]
|
59
|
+
)
|
60
|
+
|
61
|
+
def test_sampling_options(self):
|
62
|
+
lm = compositional.RandomChoice([
|
63
|
+
fake.StaticResponse('hi'),
|
64
|
+
fake.StaticSequence(['hello', 'world'])
|
65
|
+
], temperature=0.5)
|
66
|
+
self.assertEqual(
|
67
|
+
lm.candidates[0].sampling_options.temperature,
|
68
|
+
0.5
|
69
|
+
)
|
70
|
+
|
71
|
+
|
72
|
+
if __name__ == '__main__':
|
73
|
+
unittest.main()
|
langfun/core/llms/vertexai.py
CHANGED
@@ -51,13 +51,13 @@ AVGERAGE_CHARS_PER_TOEKN = 4
|
|
51
51
|
SUPPORTED_MODELS_AND_SETTINGS = {
|
52
52
|
'gemini-1.5-pro-001': pg.Dict(
|
53
53
|
api='gemini',
|
54
|
-
rpm=
|
54
|
+
rpm=100,
|
55
55
|
cost_per_1k_input_chars=0.0003125,
|
56
56
|
cost_per_1k_output_chars=0.00125,
|
57
57
|
),
|
58
58
|
'gemini-1.5-pro-002': pg.Dict(
|
59
59
|
api='gemini',
|
60
|
-
rpm=
|
60
|
+
rpm=100,
|
61
61
|
cost_per_1k_input_chars=0.0003125,
|
62
62
|
cost_per_1k_output_chars=0.00125,
|
63
63
|
),
|
@@ -75,7 +75,7 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
75
75
|
),
|
76
76
|
'gemini-1.5-pro': pg.Dict(
|
77
77
|
api='gemini',
|
78
|
-
rpm=
|
78
|
+
rpm=100,
|
79
79
|
cost_per_1k_input_chars=0.0003125,
|
80
80
|
cost_per_1k_output_chars=0.00125,
|
81
81
|
),
|
@@ -87,7 +87,7 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
87
87
|
),
|
88
88
|
'gemini-1.5-pro-latest': pg.Dict(
|
89
89
|
api='gemini',
|
90
|
-
rpm=
|
90
|
+
rpm=100,
|
91
91
|
cost_per_1k_input_chars=0.0003125,
|
92
92
|
cost_per_1k_output_chars=0.00125,
|
93
93
|
),
|
@@ -199,6 +199,12 @@ class VertexAITest(unittest.TestCase):
|
|
199
199
|
# There is a discrepancy between the `property_ordering` in the
|
200
200
|
# Google-internal version and the open-source version.
|
201
201
|
actual['response_schema'].pop('property_ordering', None)
|
202
|
+
if pg.KeyPath.parse('response_schema.type_').get(actual):
|
203
|
+
actual['response_schema']['type'] = actual['response_schema'].pop('type_')
|
204
|
+
if pg.KeyPath.parse('response_schema.properties.name.type_').get(actual):
|
205
|
+
actual['response_schema']['properties']['name']['type'] = actual[
|
206
|
+
'response_schema']['properties']['name'].pop('type_')
|
207
|
+
|
202
208
|
self.assertEqual(
|
203
209
|
actual,
|
204
210
|
dict(
|
@@ -209,9 +215,9 @@ class VertexAITest(unittest.TestCase):
|
|
209
215
|
stop_sequences=['\n'],
|
210
216
|
response_mime_type='application/json',
|
211
217
|
response_schema={
|
212
|
-
'
|
218
|
+
'type': 'OBJECT',
|
213
219
|
'properties': {
|
214
|
-
'name': {'
|
220
|
+
'name': {'type': 'STRING'}
|
215
221
|
},
|
216
222
|
'required': ['name'],
|
217
223
|
'title': 'Person',
|
@@ -1,15 +1,15 @@
|
|
1
|
-
langfun/__init__.py,sha256=
|
1
|
+
langfun/__init__.py,sha256=o_HvoQggla5uqNA7uF1126aZhayHnVNP__nd_t5ElEQ,2358
|
2
2
|
langfun/core/__init__.py,sha256=xlvFTXc7IKUTs8aCFRFhzOLTmmeuhXgk9yx2InBLNiA,4937
|
3
3
|
langfun/core/component.py,sha256=HVrEoTL1Y01iqOHC3FYdbAOnffqfHHtGJXoK1vkdEwo,11583
|
4
4
|
langfun/core/component_test.py,sha256=sG-T2wpvBfHqWGZE7sc4NayJj2aj5QFBzSwFiwrGEIc,10376
|
5
5
|
langfun/core/concurrent.py,sha256=QMNYhB_PyjvVJtabMokpzotZRYvyE9iYu2QsgwDk7M4,29552
|
6
6
|
langfun/core/concurrent_test.py,sha256=ILlAjfhV84yJfY1QLe3N9aYry1sCjY-ywfIlXGafenI,17336
|
7
|
-
langfun/core/console.py,sha256=
|
8
|
-
langfun/core/console_test.py,sha256=
|
7
|
+
langfun/core/console.py,sha256=Fra2_MSWZbFh6rY8HZoYgpGLsrNvhaGuL03znOwQbhM,2529
|
8
|
+
langfun/core/console_test.py,sha256=pBOcuNMJdVELywvroptfcRtJMsegMm3wSlHAL2TdxVk,1679
|
9
9
|
langfun/core/langfunc.py,sha256=G50YgoVZ0y1GFw2ev41MlOqr6qa8YakbvNC0h_E0PiA,11140
|
10
10
|
langfun/core/langfunc_test.py,sha256=fKIAqcSNI_7M6nwoZW77HEam8Oa6vcWhsCNgVJanzb4,8822
|
11
|
-
langfun/core/language_model.py,sha256=
|
12
|
-
langfun/core/language_model_test.py,sha256=
|
11
|
+
langfun/core/language_model.py,sha256=UtLvclKx55_SAKZ-ajaquudLxKorTARAeZFme5IaPi8,33499
|
12
|
+
langfun/core/language_model_test.py,sha256=td81wm4zFPeMb16nmIuIZ6eHtpYhH0k6IeiYLfGgR0o,31525
|
13
13
|
langfun/core/logging.py,sha256=uslllP0RTGN223oro1m4nZZ0bFppcL07OwbFKm2iG6k,7519
|
14
14
|
langfun/core/logging_test.py,sha256=b5bPTSUoYeICATaO6I8dOVumodwRbxSp1Oz96Sf3KcE,6104
|
15
15
|
langfun/core/memory.py,sha256=f-asN1F7Vehgdn_fK84v73GrEUOxRtaW934keutTKjk,2416
|
@@ -29,6 +29,11 @@ langfun/core/template.py,sha256=_Sae_WsRo_yvwul0nqAPTOa0NOjW1zNYbW0CQpvg7l0,2538
|
|
29
29
|
langfun/core/template_test.py,sha256=Qokz1hQFhRYaTZWBWGqvPJ0NXC9B9ennUpnRYHEf0hE,20542
|
30
30
|
langfun/core/text_formatting.py,sha256=d7t9vaY6aCn1dkfkikpNYnBy5E_i93vHbfyDWFclGZU,5284
|
31
31
|
langfun/core/text_formatting_test.py,sha256=ck0Xzdd4YF4CtCUj7VE0GybfbAyKQ8p3xkM1FBGrqIk,2096
|
32
|
+
langfun/core/agentic/__init__.py,sha256=ndoDX0sAYsa3eVdXuu6nB-a-BH5TaK3urW6zAaFiyVs,1110
|
33
|
+
langfun/core/agentic/action.py,sha256=Am5E1EH1ZBAhzagbnDVRnR4vBzI4H6MEtQ58laSPfTg,7515
|
34
|
+
langfun/core/agentic/action_eval.py,sha256=ZtjTh34S7XPIUqandQ0YwAtzw-S7ofuZ7rRXnRbUMdQ,4424
|
35
|
+
langfun/core/agentic/action_eval_test.py,sha256=tRUkWmOE9p0rpNOq19xAY2oDEnYsEEykjg6sUpAwJk0,2832
|
36
|
+
langfun/core/agentic/action_test.py,sha256=CBsUQICD8yPCDUBBFouSkZuyLAcK_C-AWYc28Zts10E,2624
|
32
37
|
langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
|
33
38
|
langfun/core/coding/python/__init__.py,sha256=MJ-vubliz-ebrZH3OBRKBwMi0S9-FrhGCp8YQLR6_I4,1776
|
34
39
|
langfun/core/coding/python/correction.py,sha256=WiBdoScL-6C___iA3Tg3vizuYtJWI-_4wy9zcMfVpj8,7020
|
@@ -43,7 +48,7 @@ langfun/core/coding/python/parsing.py,sha256=LMg8REP4VDY0YQjtPAGNAW4rKlMNdSXF8m1
|
|
43
48
|
langfun/core/coding/python/parsing_test.py,sha256=9vAWF484kWIm6JZq8NFiMgKUDhXV-deRl1QMmNERfAA,7386
|
44
49
|
langfun/core/coding/python/permissions.py,sha256=1QWGHvzL8MM0Ok_auQ9tURqZHtdOfJaDpBzZ29GUE-c,2544
|
45
50
|
langfun/core/coding/python/permissions_test.py,sha256=w5EDb8QxpxgJyZkojyzVWQvDfg366zn99-g__6TbPQ0,2699
|
46
|
-
langfun/core/eval/__init__.py,sha256=
|
51
|
+
langfun/core/eval/__init__.py,sha256=OEXr1ZRuvLuhJJfuQ1ZWQ-SvYzjyrtiAAEogYaB7E6o,1933
|
47
52
|
langfun/core/eval/base.py,sha256=ajHUS_BdzBIDKEwAmMzne0lJi8HcDhPmyw_plO0p7G0,75814
|
48
53
|
langfun/core/eval/base_test.py,sha256=-LsIV9DXlDal0EnOlaWpibJvfef0NbxtZAm0OH_abAE,27189
|
49
54
|
langfun/core/eval/matching.py,sha256=UnjdM_ebPqXKJamY4lvL3AYxrMIz3LqkjRTnHJ5xsYc,9349
|
@@ -52,9 +57,33 @@ langfun/core/eval/patching.py,sha256=R0s2eAd1m97exQt06dmUL0V_MBG0W2Hxg7fhNB7cXW0
|
|
52
57
|
langfun/core/eval/patching_test.py,sha256=8kCd54Egjju22FMgtJuxEsrXkW8ifs-UUBHtrCG1L6w,4775
|
53
58
|
langfun/core/eval/scoring.py,sha256=B69IsIxiPs1xZcOBFIhZF70YmDue2Siik-CPL2bh33s,6254
|
54
59
|
langfun/core/eval/scoring_test.py,sha256=O8olHbrUEg60gMxwOkWzKBJZpZoUlmVnBANX5Se2SXM,4546
|
55
|
-
langfun/core/
|
56
|
-
langfun/core/
|
60
|
+
langfun/core/eval/v2/__init__.py,sha256=XMpkKjd_vL_qzCQYPAwR1NNO0T_Zo5j4kP3eYL-EJLc,1428
|
61
|
+
langfun/core/eval/v2/checkpointing.py,sha256=AhChb5U0fTd0NmDHaIaVE9qJ8zFEe7Lhq7KjIt1D2pQ,3766
|
62
|
+
langfun/core/eval/v2/checkpointing_test.py,sha256=xU5asikwUn-rCmNd93ssvT6gDiKvvWogYKQa0r_TqOM,3046
|
63
|
+
langfun/core/eval/v2/evaluation.py,sha256=hausa1NnUGi56KNrucd61qv9km1eDvcj2GBqiJzb0FA,19371
|
64
|
+
langfun/core/eval/v2/evaluation_test.py,sha256=hh6L2HhQPQ6NBv1pXKcNkYraNcV9MLuJ--69t9jbmaI,5846
|
65
|
+
langfun/core/eval/v2/example.py,sha256=fURrvdNmMsVMqoEErcsmLmC6Xq3ny16dYsnLH8HVlcY,9626
|
66
|
+
langfun/core/eval/v2/example_test.py,sha256=WcJmU7IQQXvjFia63mokySC4CqxzVL9Wso1sC5F0YK8,3032
|
67
|
+
langfun/core/eval/v2/experiment.py,sha256=xkROLFYj2Nf6G9wunfVx6nEhdMX_560hRSsB8qT3S_Q,28787
|
68
|
+
langfun/core/eval/v2/experiment_test.py,sha256=R0ujPSluvDu5gwxGpiSWJ3eTiVpfleJDwwT1pXN8Nvg,8933
|
69
|
+
langfun/core/eval/v2/metric_values.py,sha256=_B905bC-jxrYPLSEcP2M8MaHZOVMz_bVrUw8YC4arCE,4660
|
70
|
+
langfun/core/eval/v2/metric_values_test.py,sha256=ab2oF_HsIwrSy459108ggyjgefHSPn8UVILR4dRwx14,2634
|
71
|
+
langfun/core/eval/v2/metrics.py,sha256=bl8i6u-ZHRBz4hAc3LzsZ2Dc7ZRQcuTYeUhhH-GxfF0,10628
|
72
|
+
langfun/core/eval/v2/metrics_test.py,sha256=p4FzLJsE8XAzAQuyP9hfEf9YeKWZ__PO_ue8a9P0-cc,6082
|
73
|
+
langfun/core/eval/v2/progress.py,sha256=azZgssQgNdv3IgjKEaQBuGI5ucFDNbdi02P4z_nQ8GE,10292
|
74
|
+
langfun/core/eval/v2/progress_test.py,sha256=YU7VHzmy5knPZwj9vpBN3rQQH2tukj9eKHkuBCI62h8,2540
|
75
|
+
langfun/core/eval/v2/progress_tracking.py,sha256=1imwSbllxHWG3zYrzo2NvytBZsVtjqum6bmXGGsvT1E,5987
|
76
|
+
langfun/core/eval/v2/progress_tracking_test.py,sha256=eY2HvZeEXDA5Zyfi2m5NDWO_9kSfQsaAOEcIhkSbWCY,1874
|
77
|
+
langfun/core/eval/v2/reporting.py,sha256=TGkli1IDwqfqsCJ_WslOMGk_24JDg7oRRTGXlAJlWpc,4361
|
78
|
+
langfun/core/eval/v2/reporting_test.py,sha256=JxffbUPWInUyLjo-AQVFrllga884Mdfm05R86FtxSss,1482
|
79
|
+
langfun/core/eval/v2/runners.py,sha256=2OHAVTbqq9hZ3qZpUEvQ--9X-Cr_z8Ghc3MRXCfclpk,13442
|
80
|
+
langfun/core/eval/v2/runners_test.py,sha256=s3GgWA-H9x0JyPhPZq2s9-5GXGHo5dSbDD-4faX0h_E,11164
|
81
|
+
langfun/core/eval/v2/test_helper.py,sha256=pDpZTBnWRR5xjJv3Uy3NWEzArqlL8FTMOgeR4C53F5M,2348
|
82
|
+
langfun/core/llms/__init__.py,sha256=uR2vLghsnZqY6OjZKAs9Lo-YFNxZNunf3A0q6-1GYlc,6346
|
83
|
+
langfun/core/llms/anthropic.py,sha256=uJXVgaFONL8okOSVQ4VGMGht_VZ30m1hoLzmDbIjmks,13990
|
57
84
|
langfun/core/llms/anthropic_test.py,sha256=-2U4kc_pgBM7wqxu8RuxzyHPGww1EAWqKUvN4PW8Btw,8058
|
85
|
+
langfun/core/llms/compositional.py,sha256=csW_FLlgL-tpeyCOTVvfUQkMa_zCN5Y2I-YbSNuK27U,2872
|
86
|
+
langfun/core/llms/compositional_test.py,sha256=4eTnOer-DncRKGaIJW2ZQQMLnt5r2R0UIx_DYOvGAQo,2027
|
58
87
|
langfun/core/llms/fake.py,sha256=gCHBYBLvBCsC78HI1hpoqXCS-p1FMTgY1P1qh_sGBPk,3070
|
59
88
|
langfun/core/llms/fake_test.py,sha256=2h13qkwEz_JR0mtUDPxdAhQo7MueXaFSwsD2DIRDW9g,7653
|
60
89
|
langfun/core/llms/google_genai.py,sha256=btUIfWteBoj8Jl0j8d3e8hyI6p3Biq4rldlQYctVQfg,10936
|
@@ -67,8 +96,8 @@ langfun/core/llms/openai.py,sha256=qrAiJxE0tS7ZqjaVzRgVJKtMtoo1Z5TYpvi5ikTwPpw,2
|
|
67
96
|
langfun/core/llms/openai_test.py,sha256=_8cd3VRNEUfE0-Ko1RiM6MlC5hjalRj7nYTJNhG1p3E,18907
|
68
97
|
langfun/core/llms/rest.py,sha256=sWbYUV8S3SuOg9giq7xwD-xDRfaF7NP_ig7bI52-Rj4,3442
|
69
98
|
langfun/core/llms/rest_test.py,sha256=NZ3Nf0XQVpT9kLP5cBVo_yBHLI7vWTYhWQxYEJVMGs4,3472
|
70
|
-
langfun/core/llms/vertexai.py,sha256
|
71
|
-
langfun/core/llms/vertexai_test.py,sha256=
|
99
|
+
langfun/core/llms/vertexai.py,sha256=-KB880Ovab6CQqI-Y5Y6V7RlEA0tAIazmnnG74Ebp4A,18866
|
100
|
+
langfun/core/llms/vertexai_test.py,sha256=I8gEHLRXZZGq_d2VDtJAkAIzf-lNSCoB8y2lwFckY-w,10885
|
72
101
|
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
73
102
|
langfun/core/llms/cache/base.py,sha256=rt3zwmyw0y9jsSGW-ZbV1vAfLxQ7_3AVk0l2EySlse4,3918
|
74
103
|
langfun/core/llms/cache/in_memory.py,sha256=l6b-iU9OTfTRo9Zmg4VrQIuArs4cCJDOpXiEpvNocjo,5004
|
@@ -119,8 +148,8 @@ langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fik
|
|
119
148
|
langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
|
120
149
|
langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
|
121
150
|
langfun/core/templates/selfplay_test.py,sha256=Ot__1P1M8oJfoTp-M9-PQ6HUXqZKyMwvZ5f7yQ3yfyM,2326
|
122
|
-
langfun-0.1.2.
|
123
|
-
langfun-0.1.2.
|
124
|
-
langfun-0.1.2.
|
125
|
-
langfun-0.1.2.
|
126
|
-
langfun-0.1.2.
|
151
|
+
langfun-0.1.2.dev202411150804.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
152
|
+
langfun-0.1.2.dev202411150804.dist-info/METADATA,sha256=1RftsAD_qubksdeWSmhbcR35HGkcT7opT3L1c1EO5Ok,8890
|
153
|
+
langfun-0.1.2.dev202411150804.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
154
|
+
langfun-0.1.2.dev202411150804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
155
|
+
langfun-0.1.2.dev202411150804.dist-info/RECORD,,
|
File without changes
|
{langfun-0.1.2.dev202411110804.dist-info → langfun-0.1.2.dev202411150804.dist-info}/top_level.txt
RENAMED
File without changes
|