synth-ai 0.2.4.dev5__py3-none-any.whl → 0.2.4.dev6__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.
- synth_ai/environments/examples/crafter_classic/engine.py +8 -4
- synth_ai/environments/examples/wordle/__init__.py +29 -0
- synth_ai/environments/examples/wordle/engine.py +391 -0
- synth_ai/environments/examples/wordle/environment.py +154 -0
- synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +75 -0
- synth_ai/environments/examples/wordle/taskset.py +222 -0
- synth_ai/environments/service/app.py +8 -0
- synth_ai/environments/service/core_routes.py +38 -0
- synth_ai/learning/prompts/banking77_injection_eval.py +163 -0
- synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +201 -0
- synth_ai/learning/prompts/mipro.py +273 -1
- synth_ai/learning/prompts/random_search.py +247 -0
- synth_ai/learning/prompts/run_mipro_banking77.py +160 -0
- synth_ai/learning/prompts/run_random_search_banking77.py +305 -0
- synth_ai/lm/injection.py +81 -0
- synth_ai/lm/overrides.py +204 -0
- synth_ai/lm/provider_support/anthropic.py +39 -12
- synth_ai/lm/provider_support/openai.py +31 -4
- synth_ai/lm/vendors/core/anthropic_api.py +16 -0
- synth_ai/lm/vendors/openai_standard.py +35 -5
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/METADATA +2 -1
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/RECORD +26 -14
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/WHEEL +0 -0
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/entry_points.txt +0 -0
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/licenses/LICENSE +0 -0
- {synth_ai-0.2.4.dev5.dist-info → synth_ai-0.2.4.dev6.dist-info}/top_level.txt +0 -0
@@ -27,6 +27,13 @@ from langfuse.decorators import langfuse_context
|
|
27
27
|
from langfuse.utils import _get_timestamp
|
28
28
|
from langfuse.utils.langfuse_singleton import LangfuseSingleton
|
29
29
|
from wrapt import wrap_function_wrapper
|
30
|
+
from synth_ai.lm.overrides import (
|
31
|
+
use_overrides_for_messages,
|
32
|
+
apply_injection as apply_injection_overrides,
|
33
|
+
apply_param_overrides,
|
34
|
+
apply_tool_overrides,
|
35
|
+
)
|
36
|
+
from synth_ai.lm.injection import apply_injection
|
30
37
|
|
31
38
|
from synth_ai.lm.provider_support.suppress_logging import *
|
32
39
|
from synth_ai.tracing_v1.trackers import (
|
@@ -349,7 +356,17 @@ def _wrap(anthropic_resource: AnthropicDefinition, initialize, wrapped, args, kw
|
|
349
356
|
generation = new_langfuse.generation(**generation_data)
|
350
357
|
|
351
358
|
try:
|
352
|
-
|
359
|
+
call_kwargs = arg_extractor.get_anthropic_args()
|
360
|
+
# Apply context-scoped injection to chat messages if present
|
361
|
+
if isinstance(call_kwargs, dict) and "messages" in call_kwargs:
|
362
|
+
try:
|
363
|
+
with use_overrides_for_messages(call_kwargs["messages"]): # type: ignore[arg-type]
|
364
|
+
call_kwargs["messages"] = apply_injection_overrides(call_kwargs["messages"]) # type: ignore[arg-type]
|
365
|
+
call_kwargs = apply_tool_overrides(call_kwargs)
|
366
|
+
call_kwargs = apply_param_overrides(call_kwargs)
|
367
|
+
except Exception:
|
368
|
+
pass
|
369
|
+
anthropic_response = wrapped(*args, **call_kwargs)
|
353
370
|
|
354
371
|
# If it's a streaming call, returns a generator
|
355
372
|
if isinstance(anthropic_response, types.GeneratorType):
|
@@ -363,10 +380,10 @@ def _wrap(anthropic_resource: AnthropicDefinition, initialize, wrapped, args, kw
|
|
363
380
|
else:
|
364
381
|
model, completion, usage = _extract_anthropic_completion(anthropic_response)
|
365
382
|
# Synth tracking
|
366
|
-
if "messages" in
|
383
|
+
if "messages" in call_kwargs:
|
367
384
|
# print("\nWRAP: Messages API path")
|
368
|
-
system_content =
|
369
|
-
original_messages =
|
385
|
+
system_content = call_kwargs.get("system")
|
386
|
+
original_messages = call_kwargs["messages"]
|
370
387
|
# print(f"WRAP: Original messages: {original_messages}")
|
371
388
|
# print(f"WRAP: System content: {system_content}")
|
372
389
|
|
@@ -397,9 +414,9 @@ def _wrap(anthropic_resource: AnthropicDefinition, initialize, wrapped, args, kw
|
|
397
414
|
)
|
398
415
|
# print("Finished tracking LM output")
|
399
416
|
|
400
|
-
elif "prompt" in
|
417
|
+
elif "prompt" in call_kwargs:
|
401
418
|
# print("\nWRAP: Completions API path")
|
402
|
-
user_prompt =
|
419
|
+
user_prompt = call_kwargs.get("prompt", "")
|
403
420
|
# print(f"WRAP: User prompt: {user_prompt}")
|
404
421
|
messages = [{"role": "user", "content": user_prompt}]
|
405
422
|
# print(f"WRAP: Messages created: {messages}")
|
@@ -476,17 +493,27 @@ async def _wrap_async(anthropic_resource: AnthropicDefinition, initialize, wrapp
|
|
476
493
|
|
477
494
|
try:
|
478
495
|
logger.debug("About to call wrapped function")
|
479
|
-
|
496
|
+
call_kwargs = kwargs
|
497
|
+
# Apply context-scoped injection to chat messages if present
|
498
|
+
if isinstance(call_kwargs, dict) and "messages" in call_kwargs:
|
499
|
+
try:
|
500
|
+
with use_overrides_for_messages(call_kwargs["messages"]): # type: ignore[arg-type]
|
501
|
+
call_kwargs["messages"] = apply_injection_overrides(call_kwargs["messages"]) # type: ignore[arg-type]
|
502
|
+
call_kwargs = apply_tool_overrides(call_kwargs)
|
503
|
+
call_kwargs = apply_param_overrides(call_kwargs)
|
504
|
+
except Exception:
|
505
|
+
pass
|
506
|
+
response = await wrapped(*args, **call_kwargs)
|
480
507
|
logger.debug(f"Got response: {response}")
|
481
508
|
|
482
509
|
model, completion, usage = _extract_anthropic_completion(response)
|
483
510
|
logger.debug(f"Extracted completion - Model: {model}, Usage: {usage}")
|
484
511
|
|
485
512
|
# Synth tracking
|
486
|
-
if "messages" in
|
513
|
+
if "messages" in call_kwargs:
|
487
514
|
# logger.debug("WRAP_ASYNC: Messages API path detected")
|
488
|
-
system_content =
|
489
|
-
original_messages =
|
515
|
+
system_content = call_kwargs.get("system")
|
516
|
+
original_messages = call_kwargs["messages"]
|
490
517
|
# logger.debug("WRAP_ASYNC: Original messages: %s", original_messages)
|
491
518
|
# logger.debug("WRAP_ASYNC: System content: %s", system_content)
|
492
519
|
|
@@ -511,9 +538,9 @@ async def _wrap_async(anthropic_resource: AnthropicDefinition, initialize, wrapp
|
|
511
538
|
model_name=model,
|
512
539
|
finetune=False,
|
513
540
|
)
|
514
|
-
elif "prompt" in
|
541
|
+
elif "prompt" in call_kwargs:
|
515
542
|
# Handle Completions API format
|
516
|
-
user_prompt =
|
543
|
+
user_prompt = call_kwargs.get("prompt", "")
|
517
544
|
messages = [{"role": "user", "content": user_prompt}]
|
518
545
|
assistant_msg = [{"role": "assistant", "content": completion}]
|
519
546
|
|
@@ -15,6 +15,13 @@ from langfuse.utils.langfuse_singleton import LangfuseSingleton
|
|
15
15
|
from packaging.version import Version
|
16
16
|
from pydantic import BaseModel
|
17
17
|
from wrapt import wrap_function_wrapper
|
18
|
+
from synth_ai.lm.overrides import (
|
19
|
+
use_overrides_for_messages,
|
20
|
+
apply_injection as apply_injection_overrides,
|
21
|
+
apply_param_overrides,
|
22
|
+
apply_tool_overrides,
|
23
|
+
)
|
24
|
+
from synth_ai.lm.injection import apply_injection
|
18
25
|
|
19
26
|
from synth_ai.lm.provider_support.suppress_logging import *
|
20
27
|
from synth_ai.tracing_v1.abstractions import MessageInputs
|
@@ -475,7 +482,17 @@ def _wrap(open_ai_resource: OpenAiDefinition, initialize, wrapped, args, kwargs)
|
|
475
482
|
)
|
476
483
|
generation = new_langfuse.generation(**generation)
|
477
484
|
try:
|
478
|
-
|
485
|
+
openai_args = arg_extractor.get_openai_args()
|
486
|
+
# Apply context-scoped injection to chat messages if present
|
487
|
+
if isinstance(openai_args, dict) and "messages" in openai_args:
|
488
|
+
try:
|
489
|
+
with use_overrides_for_messages(openai_args["messages"]): # type: ignore[arg-type]
|
490
|
+
openai_args["messages"] = apply_injection_overrides(openai_args["messages"]) # type: ignore[arg-type]
|
491
|
+
openai_args = apply_tool_overrides(openai_args)
|
492
|
+
openai_args = apply_param_overrides(openai_args)
|
493
|
+
except Exception:
|
494
|
+
pass
|
495
|
+
openai_response = wrapped(**openai_args)
|
479
496
|
|
480
497
|
if _is_streaming_response(openai_response):
|
481
498
|
return LangfuseResponseGeneratorSync(
|
@@ -527,7 +544,7 @@ def _wrap(open_ai_resource: OpenAiDefinition, initialize, wrapped, args, kwargs)
|
|
527
544
|
)
|
528
545
|
|
529
546
|
elif open_ai_resource.type == "chat":
|
530
|
-
messages =
|
547
|
+
messages = openai_args.get("messages", [])
|
531
548
|
message_input = MessageInputs(messages=messages)
|
532
549
|
|
533
550
|
# Track user input
|
@@ -605,7 +622,17 @@ async def _wrap_async(open_ai_resource: OpenAiDefinition, initialize, wrapped, a
|
|
605
622
|
generation = new_langfuse.generation(**generation)
|
606
623
|
|
607
624
|
try:
|
608
|
-
|
625
|
+
openai_args = arg_extractor.get_openai_args()
|
626
|
+
# Apply context-scoped injection to chat messages if present
|
627
|
+
if isinstance(openai_args, dict) and "messages" in openai_args:
|
628
|
+
try:
|
629
|
+
with use_overrides_for_messages(openai_args["messages"]): # type: ignore[arg-type]
|
630
|
+
openai_args["messages"] = apply_injection_overrides(openai_args["messages"]) # type: ignore[arg-type]
|
631
|
+
openai_args = apply_tool_overrides(openai_args)
|
632
|
+
openai_args = apply_param_overrides(openai_args)
|
633
|
+
except Exception:
|
634
|
+
pass
|
635
|
+
openai_response = await wrapped(**openai_args)
|
609
636
|
|
610
637
|
if _is_streaming_response(openai_response):
|
611
638
|
return LangfuseResponseGeneratorAsync(
|
@@ -654,7 +681,7 @@ async def _wrap_async(open_ai_resource: OpenAiDefinition, initialize, wrapped, a
|
|
654
681
|
)
|
655
682
|
|
656
683
|
elif open_ai_resource.type == "chat":
|
657
|
-
messages =
|
684
|
+
messages = openai_args.get("messages", [])
|
658
685
|
message_input = MessageInputs(messages=messages)
|
659
686
|
|
660
687
|
# Track user input
|
@@ -12,6 +12,8 @@ from synth_ai.lm.tools.base import BaseTool
|
|
12
12
|
from synth_ai.lm.vendors.base import BaseLMResponse, VendorBase
|
13
13
|
from synth_ai.lm.constants import SPECIAL_BASE_TEMPS, CLAUDE_REASONING_MODELS, SONNET_37_BUDGETS
|
14
14
|
from synth_ai.lm.vendors.core.openai_api import OpenAIStructuredOutputClient
|
15
|
+
from synth_ai.lm.overrides import use_overrides_for_messages, apply_injection as apply_injection_overrides, apply_param_overrides
|
16
|
+
from synth_ai.lm.injection import apply_injection
|
15
17
|
|
16
18
|
ANTHROPIC_EXCEPTIONS_TO_RETRY: Tuple[Type[Exception], ...] = (anthropic.APIError,)
|
17
19
|
|
@@ -56,6 +58,9 @@ class AnthropicAPI(VendorBase):
|
|
56
58
|
)
|
57
59
|
used_cache_handler = get_cache_handler(use_ephemeral_cache_only)
|
58
60
|
lm_config["reasoning_effort"] = reasoning_effort
|
61
|
+
# Apply context-scoped overrides and injection before splitting
|
62
|
+
with use_overrides_for_messages(messages):
|
63
|
+
messages = apply_injection_overrides(messages)
|
59
64
|
cache_result = used_cache_handler.hit_managed_cache(
|
60
65
|
model, messages, lm_config=lm_config, tools=tools
|
61
66
|
)
|
@@ -70,6 +75,10 @@ class AnthropicAPI(VendorBase):
|
|
70
75
|
"max_tokens": lm_config.get("max_tokens", 4096),
|
71
76
|
"temperature": lm_config.get("temperature", SPECIAL_BASE_TEMPS.get(model, 0)),
|
72
77
|
}
|
78
|
+
with use_overrides_for_messages(messages):
|
79
|
+
from synth_ai.lm.overrides import apply_tool_overrides
|
80
|
+
api_params = apply_tool_overrides(api_params)
|
81
|
+
api_params = apply_param_overrides(api_params)
|
73
82
|
|
74
83
|
# Add tools if provided
|
75
84
|
if tools:
|
@@ -147,6 +156,9 @@ class AnthropicAPI(VendorBase):
|
|
147
156
|
)
|
148
157
|
used_cache_handler = get_cache_handler(use_ephemeral_cache_only=use_ephemeral_cache_only)
|
149
158
|
lm_config["reasoning_effort"] = reasoning_effort
|
159
|
+
with use_overrides_for_messages(messages):
|
160
|
+
# Apply context-scoped injection before splitting into system/messages
|
161
|
+
messages = apply_injection_overrides(messages)
|
150
162
|
cache_result = used_cache_handler.hit_managed_cache(
|
151
163
|
model, messages, lm_config=lm_config, tools=tools
|
152
164
|
)
|
@@ -161,6 +173,10 @@ class AnthropicAPI(VendorBase):
|
|
161
173
|
"max_tokens": lm_config.get("max_tokens", 4096),
|
162
174
|
"temperature": lm_config.get("temperature", SPECIAL_BASE_TEMPS.get(model, 0)),
|
163
175
|
}
|
176
|
+
with use_overrides_for_messages(messages):
|
177
|
+
from synth_ai.lm.overrides import apply_tool_overrides
|
178
|
+
api_params = apply_tool_overrides(api_params)
|
179
|
+
api_params = apply_param_overrides(api_params)
|
164
180
|
|
165
181
|
# Add tools if provided
|
166
182
|
if tools:
|
@@ -13,6 +13,8 @@ from synth_ai.lm.caching.initialize import (
|
|
13
13
|
)
|
14
14
|
from synth_ai.lm.tools.base import BaseTool
|
15
15
|
from synth_ai.lm.vendors.base import BaseLMResponse, VendorBase
|
16
|
+
from synth_ai.lm.injection import apply_injection
|
17
|
+
from synth_ai.lm.overrides import use_overrides_for_messages, apply_param_overrides, apply_tool_overrides
|
16
18
|
from synth_ai.lm.constants import SPECIAL_BASE_TEMPS
|
17
19
|
from synth_ai.lm.vendors.retries import MAX_BACKOFF
|
18
20
|
from synth_ai.lm.vendors.openai_standard_responses import OpenAIResponsesAPIMixin
|
@@ -123,6 +125,9 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
123
125
|
print(f" LM config: {lm_config}")
|
124
126
|
|
125
127
|
messages = special_orion_transform(model, messages)
|
128
|
+
# Apply context-scoped overrides and prompt injection just before building API params
|
129
|
+
with use_overrides_for_messages(messages):
|
130
|
+
messages = apply_injection(messages)
|
126
131
|
used_cache_handler = get_cache_handler(use_ephemeral_cache_only)
|
127
132
|
lm_config["reasoning_effort"] = reasoning_effort
|
128
133
|
cache_result = used_cache_handler.hit_managed_cache(
|
@@ -143,6 +148,8 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
143
148
|
"model": model,
|
144
149
|
"messages": messages,
|
145
150
|
}
|
151
|
+
with use_overrides_for_messages(messages):
|
152
|
+
api_params = apply_param_overrides(api_params)
|
146
153
|
|
147
154
|
# Add tools if provided
|
148
155
|
if tools and all(isinstance(tool, BaseTool) for tool in tools):
|
@@ -150,8 +157,11 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
150
157
|
elif tools:
|
151
158
|
api_params["tools"] = tools
|
152
159
|
|
153
|
-
# Only add temperature for non o1/o3 models
|
154
|
-
if
|
160
|
+
# Only add temperature for non o1/o3 models, and do not override if already set via overrides
|
161
|
+
if (
|
162
|
+
not any(prefix in model for prefix in ["o1-", "o3-"])
|
163
|
+
and "temperature" not in api_params
|
164
|
+
):
|
155
165
|
api_params["temperature"] = lm_config.get(
|
156
166
|
"temperature", SPECIAL_BASE_TEMPS.get(model, 0)
|
157
167
|
)
|
@@ -187,6 +197,11 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
187
197
|
api_params["extra_headers"] = hdrs
|
188
198
|
except Exception:
|
189
199
|
pass
|
200
|
+
# Apply overrides (tools and params) from context after building baseline params
|
201
|
+
with use_overrides_for_messages(messages):
|
202
|
+
api_params = apply_tool_overrides(api_params)
|
203
|
+
api_params = apply_param_overrides(api_params)
|
204
|
+
|
190
205
|
# Forward Qwen3 chat template kwargs via extra_body when requested
|
191
206
|
if lm_config.get("enable_thinking") is not None:
|
192
207
|
api_params["extra_body"] = api_params.get("extra_body", {})
|
@@ -417,12 +432,17 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
417
432
|
"response_model is not supported for standard calls"
|
418
433
|
)
|
419
434
|
messages = special_orion_transform(model, messages)
|
435
|
+
with use_overrides_for_messages(messages):
|
436
|
+
# Apply context-scoped prompt injection just before building API params
|
437
|
+
messages = apply_injection(messages)
|
420
438
|
used_cache_handler = get_cache_handler(use_ephemeral_cache_only=use_ephemeral_cache_only)
|
421
439
|
lm_config["reasoning_effort"] = reasoning_effort
|
422
440
|
cache_result = used_cache_handler.hit_managed_cache(
|
423
441
|
model, messages, lm_config=lm_config, tools=tools
|
424
442
|
)
|
425
|
-
|
443
|
+
# During pytest runs, bypass returning cache to allow tests to inspect outgoing params
|
444
|
+
IN_PYTEST = os.getenv("PYTEST_CURRENT_TEST") is not None
|
445
|
+
if cache_result and not IN_PYTEST:
|
426
446
|
return cache_result
|
427
447
|
|
428
448
|
# Common API call params
|
@@ -430,6 +450,8 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
430
450
|
"model": model,
|
431
451
|
"messages": messages,
|
432
452
|
}
|
453
|
+
with use_overrides_for_messages(messages):
|
454
|
+
api_params = apply_param_overrides(api_params)
|
433
455
|
|
434
456
|
# Add tools if provided
|
435
457
|
if tools and all(isinstance(tool, BaseTool) for tool in tools):
|
@@ -437,8 +459,16 @@ class OpenAIStandard(VendorBase, OpenAIResponsesAPIMixin):
|
|
437
459
|
elif tools:
|
438
460
|
api_params["tools"] = tools
|
439
461
|
|
440
|
-
#
|
441
|
-
|
462
|
+
# Apply overrides (tools and params) using module-level imports
|
463
|
+
with use_overrides_for_messages(messages):
|
464
|
+
api_params = apply_tool_overrides(api_params)
|
465
|
+
api_params = apply_param_overrides(api_params)
|
466
|
+
|
467
|
+
# Only add temperature for non o1/o3 models, and do not override if already set via overrides
|
468
|
+
if (
|
469
|
+
not any(prefix in model for prefix in ["o1-", "o3-"])
|
470
|
+
and "temperature" not in api_params
|
471
|
+
):
|
442
472
|
api_params["temperature"] = lm_config.get(
|
443
473
|
"temperature", SPECIAL_BASE_TEMPS.get(model, 0)
|
444
474
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: synth-ai
|
3
|
-
Version: 0.2.4.
|
3
|
+
Version: 0.2.4.dev6
|
4
4
|
Summary: Software for aiding the best and multiplying the will - Core AI functionality and tracing
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
6
6
|
License-Expression: MIT
|
@@ -49,6 +49,7 @@ Requires-Dist: textual>=1.1.0
|
|
49
49
|
Requires-Dist: openai-harmony>=0.0.1
|
50
50
|
Requires-Dist: asyncpg>=0.30.0
|
51
51
|
Requires-Dist: aiohttp>=3.8.0
|
52
|
+
Requires-Dist: datasets>=4.0.0
|
52
53
|
Provides-Extra: dev
|
53
54
|
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
54
55
|
Requires-Dist: twine>=4.0.0; extra == "dev"
|
@@ -33,7 +33,7 @@ synth_ai/environments/examples/__init__.py,sha256=POgz9O4n1tvPAW1rYNUNeQGrMlWxoP
|
|
33
33
|
synth_ai/environments/examples/crafter_classic/__init__.py,sha256=waICaSbO19tTJpj-BxCURLDxRdx_gnSVQXLIwo4gqLM,270
|
34
34
|
synth_ai/environments/examples/crafter_classic/config_logging.py,sha256=Eqq35s0lPAmBiU0neZM6vmHPct15gp9TwS3vogrNziM,3794
|
35
35
|
synth_ai/environments/examples/crafter_classic/debug_translation.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
-
synth_ai/environments/examples/crafter_classic/engine.py,sha256=
|
36
|
+
synth_ai/environments/examples/crafter_classic/engine.py,sha256=j3ld7vuWx5KZgs_4g2u8UPJuOhvUL3qt4TZM3Cuo8NU,25257
|
37
37
|
synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py,sha256=Jhn4dtLypG4-eLMsHxesagVTGJtzoGF6UssEfblEJYE,2801
|
38
38
|
synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py,sha256=E7EA1IODxeb8Fq6uV15pL5HFuv4q-KTwnmRGqweuM34,11126
|
39
39
|
synth_ai/environments/examples/crafter_classic/environment.py,sha256=6Us77M0AhVOrBwZoaZesxC4QXC6q1tmVphga2BZvVv4,17218
|
@@ -127,11 +127,16 @@ synth_ai/environments/examples/verilog/__init__.py,sha256=JBf4ayWGO-VPK7PLitp_-j
|
|
127
127
|
synth_ai/environments/examples/verilog/engine.py,sha256=jxpVJ5oVbRyObCLnETfy-sPARunaoYLLaPx7cyl68jc,12170
|
128
128
|
synth_ai/environments/examples/verilog/environment.py,sha256=M6igedpgJWvLjw_ta1k4fwY9Kz0dPDIEgO9S4B-eBGg,12329
|
129
129
|
synth_ai/environments/examples/verilog/taskset.py,sha256=-Vqrc_HY07WHcHLDQJ3KIDU3kNjpCgAMqCUYtay2Vyg,13336
|
130
|
+
synth_ai/environments/examples/wordle/__init__.py,sha256=tQIybhLzILCDhOTYFdToG8nSzVXx9zAIduMPJ6E3zb0,804
|
131
|
+
synth_ai/environments/examples/wordle/engine.py,sha256=HJO2VVRiAx6ddY-cjsMidIaFJY9d2bvzjEGA-uQ6RvM,13044
|
132
|
+
synth_ai/environments/examples/wordle/environment.py,sha256=mlmSubr8se7i-p858xLKQWcTK0dgcrXOTQ6NTjeoGZ0,6326
|
133
|
+
synth_ai/environments/examples/wordle/taskset.py,sha256=vM3sm91Fc6g5hmk-d36YhHTz4gnZ5WlYFGiZBn6XqEw,8182
|
134
|
+
synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py,sha256=PH-grN1UgonZzrqxo15tbYYxYgNTBMwfqbaHpt-fIMQ,2510
|
130
135
|
synth_ai/environments/reproducibility/core.py,sha256=y4__bivu_tdyIas509oK2EH9KUdLaQfbJ6z3dK8wYxc,1499
|
131
136
|
synth_ai/environments/reproducibility/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
132
137
|
synth_ai/environments/reproducibility/tree.py,sha256=bl0lfIjrJGxMNmcWs75uPBwurgd1ENjN_mI5RHfrANY,13743
|
133
|
-
synth_ai/environments/service/app.py,sha256=
|
134
|
-
synth_ai/environments/service/core_routes.py,sha256=
|
138
|
+
synth_ai/environments/service/app.py,sha256=d_2OFCbywdM0C3UH3T7gdEl_Sh2SBheV2qi1QIzT-xs,2980
|
139
|
+
synth_ai/environments/service/core_routes.py,sha256=xA1db-D-GhBtIINdGAI8s5XhnwL2_F79A0PQqF_QS10,38735
|
135
140
|
synth_ai/environments/service/external_registry.py,sha256=x7Qgbw83-1xcN69J337UHm4xPpWc5B0KUZrNUFtutLE,1795
|
136
141
|
synth_ai/environments/service/registry.py,sha256=Ex9c3ZwfZ-oW9nGz7bwCj1GNzvu78Z54rwufjKhsnMg,405
|
137
142
|
synth_ai/environments/stateful/__init__.py,sha256=UPNmotqxS2zXjSfhBui6R4qsDOIxKECL5xVTVDHcvsk,39
|
@@ -155,11 +160,18 @@ synth_ai/learning/offline/sft.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
155
160
|
synth_ai/learning/offline/shared.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
156
161
|
synth_ai/learning/online/grpo.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
157
162
|
synth_ai/learning/online/irft.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
163
|
+
synth_ai/learning/prompts/banking77_injection_eval.py,sha256=hlmm1neRtZBp0g0mCw0FZAr-564EVhIt92scvgZPdVM,5687
|
158
164
|
synth_ai/learning/prompts/gepa.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
159
|
-
synth_ai/learning/prompts/
|
165
|
+
synth_ai/learning/prompts/hello_world_in_context_injection_ex.py,sha256=NV4GA8vmW0jD9vSAdb_qDCHCUmSOyxVtHQKOjCGM8e4,8990
|
166
|
+
synth_ai/learning/prompts/mipro.py,sha256=H62Ig7E_ujDVp_qhX1bmbznU0UtEKSDlIvRRRvhudOc,9465
|
167
|
+
synth_ai/learning/prompts/random_search.py,sha256=z87u41gpt377347ea1jpQisSryuLu6DQrldytZDzGCY,8321
|
168
|
+
synth_ai/learning/prompts/run_mipro_banking77.py,sha256=pae3ij_U_0SJ9I8VP4o2GGkXwiFY6M-dIzBLkVL7GHU,5308
|
169
|
+
synth_ai/learning/prompts/run_random_search_banking77.py,sha256=u3TvIJe2sXNV5hGDlOTYeQdPGwJk5lQ0CWf1mzeRuJ0,13236
|
160
170
|
synth_ai/lm/__init__.py,sha256=aylYW_xWcQlRppFNfys7VtkNICMyYe6FMZmjVRN_BmM,1142
|
161
171
|
synth_ai/lm/config.py,sha256=LW5QG-U2heRdvXQ9qi5NWExOF8yprQi-cCo817nf28g,3604
|
162
172
|
synth_ai/lm/constants.py,sha256=ToYCu-ZeHgbb7VIRpDcCDV2D668P4UEHOKXM7urkp08,1248
|
173
|
+
synth_ai/lm/injection.py,sha256=8yzqoeuc530TqsAl1afZPhUnFaP7HZuRkh0IcyN0IpQ,2836
|
174
|
+
synth_ai/lm/overrides.py,sha256=R_H8L0_h1mHKGXvrsBV0FVpj0OWlhEBNx-7mLIlFiY8,6900
|
163
175
|
synth_ai/lm/unified_interface.py,sha256=4rK0uU84w5tJObxZw6LqZOrPRrAAKd9R1Um2SYIVbbM,6474
|
164
176
|
synth_ai/lm/warmup.py,sha256=_THQV-YUO7XQzH8IgHWRqxjISmN02K5E3iwS8HrvYOk,6791
|
165
177
|
synth_ai/lm/caching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -179,8 +191,8 @@ synth_ai/lm/cost/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
179
191
|
synth_ai/lm/cost/monitor.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
180
192
|
synth_ai/lm/cost/statefulness.py,sha256=SO-H9_R1_KL110z_ceRIJzH6n8D9gpx-R1-_mtO7pNI,37
|
181
193
|
synth_ai/lm/provider_support/__init__.py,sha256=4wd2x_gsRAVnGwHsK4nR0rlyIctPEpbZDETAtSh7doA,225
|
182
|
-
synth_ai/lm/provider_support/anthropic.py,sha256=
|
183
|
-
synth_ai/lm/provider_support/openai.py,sha256=
|
194
|
+
synth_ai/lm/provider_support/anthropic.py,sha256=Dh4j5Xwv1KEtTMXA6bg4yanWuh0tScClq2AZP0f83Ro,35630
|
195
|
+
synth_ai/lm/provider_support/openai.py,sha256=yxVL7DQToIUcYqgJRYK-Pev522jW6pkxrtkL13cPtb0,40159
|
184
196
|
synth_ai/lm/provider_support/suppress_logging.py,sha256=CKk8yGVWUZT6YLqzALOf4PZ3WyqMC_DiUTx6vF9O0zo,1037
|
185
197
|
synth_ai/lm/structured_outputs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
186
198
|
synth_ai/lm/structured_outputs/handler.py,sha256=BrGuBT3XjPJBNR5YhrHQvu1wuJB9_q83ONDhxuJlFpo,17294
|
@@ -190,12 +202,12 @@ synth_ai/lm/tools/__init__.py,sha256=3JM5vqZqKloaeHaxuO49C8A_0qljys3pQ1yt70WKhho
|
|
190
202
|
synth_ai/lm/tools/base.py,sha256=i4pXGXLbuU5paxIEpEwgb5cRYB-m4ovRZbftm17mXDM,5816
|
191
203
|
synth_ai/lm/vendors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
192
204
|
synth_ai/lm/vendors/base.py,sha256=g2u1Z2irv1EbMRmSE57_6xbInicW4yZM23lpqZZDaKo,2522
|
193
|
-
synth_ai/lm/vendors/openai_standard.py,sha256=
|
205
|
+
synth_ai/lm/vendors/openai_standard.py,sha256=YjGfr3vJa5pEAc-q74jLd0WFiY0Wuj1cLdeoQExP7P0,31802
|
194
206
|
synth_ai/lm/vendors/openai_standard_responses.py,sha256=P4-2QhxPfs4PRpqATOdGi_Yo2GW7XxbH_TEsYgXS458,10357
|
195
207
|
synth_ai/lm/vendors/retries.py,sha256=DkLYngUdqiDnLPv5n-gV9Tdq1ChRxmA8emLSMTcZJwM,429
|
196
208
|
synth_ai/lm/vendors/synth_client.py,sha256=uSZfsyr1cjW53tOVEuNUOCdfJuMvcTpmJ2WDtcpapBQ,16279
|
197
209
|
synth_ai/lm/vendors/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
198
|
-
synth_ai/lm/vendors/core/anthropic_api.py,sha256=
|
210
|
+
synth_ai/lm/vendors/core/anthropic_api.py,sha256=S8s-CMO5GhbQ_V4CmVaNICF56If3wmT0PmCszKvTSeg,15011
|
199
211
|
synth_ai/lm/vendors/core/gemini_api.py,sha256=eCMhRSGH5ATAiszFuwGW1Nja6dgzvEOq4sZACjU4XrM,11274
|
200
212
|
synth_ai/lm/vendors/core/mistral_api.py,sha256=vf_AK-zBwa0xICdQYBcIxxtK94pus94XafXhurR0T4I,11926
|
201
213
|
synth_ai/lm/vendors/core/openai_api.py,sha256=Li9OIkvNltAtZN1MUw3RzEM0rp4PciM9SLM4y9OQmZ4,7140
|
@@ -279,9 +291,9 @@ synth_ai/v0/tracing_v1/events/manage.py,sha256=dgIlH43aEz7yA1_rj4IisJP6ROiROmLwD
|
|
279
291
|
synth_ai/v0/tracing_v1/events/scope.py,sha256=BuBkhSpVHUJt8iGT9HJZF82rbb88mQcd2vM2shg-w2I,2550
|
280
292
|
synth_ai/v0/tracing_v1/events/store.py,sha256=gVM3L_bV_PAEh9GD9eg2AQqNfANu-zH9ied7bAKk_Eg,9040
|
281
293
|
synth_ai/zyk/__init__.py,sha256=6HFa13sdHCouhzKOUPEWcJeVxKlzjWO7ERsrrwtTugs,752
|
282
|
-
synth_ai-0.2.4.
|
283
|
-
synth_ai-0.2.4.
|
284
|
-
synth_ai-0.2.4.
|
285
|
-
synth_ai-0.2.4.
|
286
|
-
synth_ai-0.2.4.
|
287
|
-
synth_ai-0.2.4.
|
294
|
+
synth_ai-0.2.4.dev6.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
|
295
|
+
synth_ai-0.2.4.dev6.dist-info/METADATA,sha256=89Oe0wNXNB8HhowQ3cRClzDFwoAXbWaHEiblVwmUF6g,7181
|
296
|
+
synth_ai-0.2.4.dev6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
297
|
+
synth_ai-0.2.4.dev6.dist-info/entry_points.txt,sha256=GSFXaJreq4PJXbixkUI0GHZwGh2dZDG5pYaoVmqr_KE,46
|
298
|
+
synth_ai-0.2.4.dev6.dist-info/top_level.txt,sha256=fBmtZyVHuKaGa29oHBaaUkrUIWTqSpoVMPiVdCDP3k8,9
|
299
|
+
synth_ai-0.2.4.dev6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|