langfun 0.1.2.dev202504160804__tar.gz → 0.1.2.dev202504180804__tar.gz
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-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/PKG-INFO +1 -1
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/base_test.py +6 -6
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/matching_test.py +3 -2
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/scoring_test.py +4 -6
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/langfunc_test.py +4 -3
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/language_model.py +10 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/__init__.py +2 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/openai.py +62 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/openai_compatible.py +5 -1
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/message_test.py +3 -3
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/PKG-INFO +1 -1
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/LICENSE +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/README.md +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action_eval.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action_eval_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/correction.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/correction_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/execution.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/execution_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/generation.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/generation_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/parsing.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/parsing_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/sandboxing.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/python/sandboxing_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/component.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/component_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/concurrent.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/concurrent_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/console.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/console_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/anthropic.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/anthropic_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/gemini.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/gemini_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/openai.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/conversion/openai_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/base.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/matching.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/patching.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/patching_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/scoring.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/checkpointing.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/evaluation.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/evaluation_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/example.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/example_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/experiment.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/experiment_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metric_values.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metric_values_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metrics.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metrics_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/progress.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/progress_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/progress_tracking.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/reporting.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/reporting_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/runners.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/runners_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/langfunc.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/language_model_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/anthropic.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/anthropic_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/azure_openai.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/azure_openai_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/base.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/in_memory.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/in_memory_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/compositional.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/compositional_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/deepseek.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/deepseek_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/fake.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/fake_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/gemini.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/gemini_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/google_genai.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/google_genai_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/groq.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/groq_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/llama_cpp.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/llama_cpp_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/openai_compatible_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/openai_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/rest.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/rest_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/vertexai.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/vertexai_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/logging.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/logging_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/memories/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/memories/conversation_history.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/memories/conversation_history_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/memory.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/message.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/audio.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/audio_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/image.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/image_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/mime.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/mime_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/pdf.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/pdf_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/video.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/video_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modality.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modality_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/natural_language.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/natural_language_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/sampling.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/sampling_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/completion.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/completion_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/description.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/description_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/function_generation.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/function_generation_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/mapping.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/mapping_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/parsing.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/parsing_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/querying.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/querying_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/schema.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/schema_generation.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/schema_generation_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/schema_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/scoring.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/scoring_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/tokenization.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/tokenization_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/subscription.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/subscription_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/template.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/template_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/__init__.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/completion.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/completion_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/conversation.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/conversation_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/demonstration.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/demonstration_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/selfplay.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/selfplay_test.py +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/SOURCES.txt +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/dependency_links.txt +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/requires.txt +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/top_level.txt +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/setup.cfg +0 -0
- {langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/setup.py +0 -0
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/base_test.py
RENAMED
@@ -101,7 +101,7 @@ class EvaluationTest(unittest.TestCase):
|
|
101
101
|
self.assertEqual(s.dir, os.path.join(s.root_dir, s.id))
|
102
102
|
self.assertEqual(s.hash, s.clone().hash)
|
103
103
|
# Test persistent hash.
|
104
|
-
self.assertEqual(s.hash, '
|
104
|
+
self.assertEqual(s.hash, 'e43392e4')
|
105
105
|
self.assertEqual(
|
106
106
|
s.hash, s.clone(override={'max_workers': 2, 'lm.timeout': 20}).hash
|
107
107
|
)
|
@@ -211,7 +211,7 @@ class EvaluationTest(unittest.TestCase):
|
|
211
211
|
s.result,
|
212
212
|
dict(
|
213
213
|
experiment_setup=dict(
|
214
|
-
id='Evaluation@
|
214
|
+
id='Evaluation@2fbf1b05',
|
215
215
|
dir=s.dir,
|
216
216
|
model='StaticSequence',
|
217
217
|
prompt_template='{{example.question}}',
|
@@ -376,7 +376,7 @@ class EvaluationTest(unittest.TestCase):
|
|
376
376
|
s.children[0].dir, os.path.join(s.root_dir, s.children[0].id)
|
377
377
|
)
|
378
378
|
# Test persistent hash.
|
379
|
-
self.assertEqual(s.hash, '
|
379
|
+
self.assertEqual(s.hash, 'de23bf31')
|
380
380
|
|
381
381
|
summary = s.run(verbose=True)
|
382
382
|
self.assertEqual(len(summary.evaluations), 2)
|
@@ -526,10 +526,10 @@ class SuiteTest(unittest.TestCase):
|
|
526
526
|
lm=lm
|
527
527
|
)
|
528
528
|
# Test for persistent hash.
|
529
|
-
self.assertEqual(s.hash, '
|
529
|
+
self.assertEqual(s.hash, '1c42f93e')
|
530
530
|
s.run()
|
531
531
|
expected = {
|
532
|
-
|
532
|
+
s.children[0].id: dict(
|
533
533
|
experiment_setup=dict(
|
534
534
|
id=s.children[0].id,
|
535
535
|
dir=s.children[0].dir,
|
@@ -555,7 +555,7 @@ class SuiteTest(unittest.TestCase):
|
|
555
555
|
),
|
556
556
|
usage=s.children[0].result.usage,
|
557
557
|
),
|
558
|
-
|
558
|
+
s.children[1].children[0].id: dict(
|
559
559
|
experiment_setup=dict(
|
560
560
|
id=s.children[1].children[0].id,
|
561
561
|
dir=s.children[1].children[0].dir,
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/matching_test.py
RENAMED
@@ -99,11 +99,12 @@ class MatchingTest(unittest.TestCase):
|
|
99
99
|
|
100
100
|
s = eval_set('match_run_test', 'query', schema_fn=answer_schema(), lm=lm)
|
101
101
|
s.run()
|
102
|
+
result_without_id = s.result.copy()
|
103
|
+
result_without_id['experiment_setup'].pop('id')
|
102
104
|
self.assertEqual(
|
103
|
-
|
105
|
+
result_without_id,
|
104
106
|
dict(
|
105
107
|
experiment_setup=dict(
|
106
|
-
id='MyTask@a98a284d',
|
107
108
|
dir=s.dir,
|
108
109
|
model='StaticSequence',
|
109
110
|
prompt_template='{{example.question}}',
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/scoring_test.py
RENAMED
@@ -77,11 +77,12 @@ class ScoringTest(unittest.TestCase):
|
|
77
77
|
s = eval_set(lm=lm)
|
78
78
|
self.assertEqual(s.avg_score, 0.0)
|
79
79
|
s.run()
|
80
|
+
result_copy = s.result.copy()
|
81
|
+
del result_copy['experiment_setup']['id']
|
80
82
|
self.assertEqual(
|
81
|
-
|
83
|
+
result_copy,
|
82
84
|
dict(
|
83
85
|
experiment_setup=dict(
|
84
|
-
id='ConstraintFollowing@90671d5e',
|
85
86
|
dir=s.dir,
|
86
87
|
model='StaticSequence',
|
87
88
|
prompt_template='{{example}}',
|
@@ -89,10 +90,7 @@ class ScoringTest(unittest.TestCase):
|
|
89
90
|
schema_fn='float_list()',
|
90
91
|
),
|
91
92
|
cache_stats=dict(
|
92
|
-
use_cache=True,
|
93
|
-
num_queries=2,
|
94
|
-
num_hits=0,
|
95
|
-
num_updates=2,
|
93
|
+
use_cache=True, num_queries=2, num_hits=0, num_updates=2
|
96
94
|
),
|
97
95
|
metrics=dict(
|
98
96
|
total=2,
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/langfunc_test.py
RENAMED
@@ -107,9 +107,10 @@ class LangFuncCallTest(unittest.TestCase):
|
|
107
107
|
' lm=ExcitedEchoer(sampling_options=LMSamplingOptions(temperature=None,'
|
108
108
|
' max_tokens=None, n=1, top_k=40, top_p=None, stop=None,'
|
109
109
|
' random_seed=None, logprobs=False, top_logprobs=None,'
|
110
|
-
' max_thinking_tokens=None
|
111
|
-
' timeout=120.0, max_attempts=5,
|
112
|
-
'
|
110
|
+
' max_thinking_tokens=None, reasoning_effort=None), cache=None,'
|
111
|
+
' max_concurrency=None, timeout=120.0, max_attempts=5,'
|
112
|
+
' retry_interval=(5, 60), exponential_backoff=True,'
|
113
|
+
' max_retry_interval=300, debug=False))',
|
113
114
|
)
|
114
115
|
|
115
116
|
l = LangFunc('Hello')
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/language_model.py
RENAMED
@@ -408,6 +408,7 @@ class LMSamplingUsage(pg.Object):
|
|
408
408
|
),
|
409
409
|
] = None
|
410
410
|
retry_stats: RetryStats = RetryStats()
|
411
|
+
completion_tokens_details: dict[str, Any] | None = None
|
411
412
|
|
412
413
|
def __bool__(self) -> bool:
|
413
414
|
return self.num_requests > 0
|
@@ -572,6 +573,15 @@ class LMSamplingOptions(component.Component):
|
|
572
573
|
int | None, 'Number of max thinking tokens.'
|
573
574
|
] = None
|
574
575
|
|
576
|
+
reasoning_effort: Annotated[
|
577
|
+
Literal['low', 'medium', 'high'] | None,
|
578
|
+
(
|
579
|
+
'This parameter is used by OpenAI reasoning models (e.g. O3, O4 mini)'
|
580
|
+
' to guides how many reasoning tokens to generate before creating a'
|
581
|
+
' response to the prompt.'
|
582
|
+
),
|
583
|
+
] = None
|
584
|
+
|
575
585
|
def cache_key(self) -> tuple[Any, ...]:
|
576
586
|
"""Returns a tuple of current values as cache key."""
|
577
587
|
return (
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/__init__.py
RENAMED
@@ -85,6 +85,8 @@ VertexAIGeminiFlash1_5 = VertexAIGemini15Flash
|
|
85
85
|
# OpenAI models.
|
86
86
|
from langfun.core.llms.openai import OpenAI
|
87
87
|
|
88
|
+
from langfun.core.llms.openai import GptO3
|
89
|
+
from langfun.core.llms.openai import GptO4Mini
|
88
90
|
from langfun.core.llms.openai import Gpt45Preview_20250227
|
89
91
|
from langfun.core.llms.openai import GptO3Mini
|
90
92
|
from langfun.core.llms.openai import GptO1
|
@@ -49,6 +49,54 @@ class OpenAIModelInfo(lf.ModelInfo):
|
|
49
49
|
#
|
50
50
|
|
51
51
|
SUPPORTED_MODELS = [
|
52
|
+
# o3 models.
|
53
|
+
OpenAIModelInfo(
|
54
|
+
model_id='o3',
|
55
|
+
alias_for='o3-2025-04-16',
|
56
|
+
in_service=True,
|
57
|
+
model_type='thinking',
|
58
|
+
description='GPT O3 model.',
|
59
|
+
url='https://platform.openai.com/docs/models/o3',
|
60
|
+
input_modalities=OpenAIModelInfo.INPUT_IMAGE_TYPES,
|
61
|
+
context_length=lf.ModelInfo.ContextLength(
|
62
|
+
max_input_tokens=200_000,
|
63
|
+
max_output_tokens=100_000,
|
64
|
+
),
|
65
|
+
pricing=lf.ModelInfo.Pricing(
|
66
|
+
cost_per_1m_cached_input_tokens=2.5,
|
67
|
+
cost_per_1m_input_tokens=10.0,
|
68
|
+
cost_per_1m_output_tokens=40.0,
|
69
|
+
),
|
70
|
+
# Set to 1/3 of Tier 5 rate limits.
|
71
|
+
rate_limits=lf.ModelInfo.RateLimits(
|
72
|
+
max_requests_per_minute=3_000,
|
73
|
+
max_tokens_per_minute=10_000_000,
|
74
|
+
),
|
75
|
+
),
|
76
|
+
# o4-mini models.
|
77
|
+
OpenAIModelInfo(
|
78
|
+
model_id='o4-mini',
|
79
|
+
alias_for='o4-mini-2025-04-16',
|
80
|
+
in_service=True,
|
81
|
+
model_type='thinking',
|
82
|
+
description='GPT O4-mini model.',
|
83
|
+
url='https://platform.openai.com/docs/models/o4-mini',
|
84
|
+
input_modalities=OpenAIModelInfo.INPUT_IMAGE_TYPES,
|
85
|
+
context_length=lf.ModelInfo.ContextLength(
|
86
|
+
max_input_tokens=200_000,
|
87
|
+
max_output_tokens=100_000,
|
88
|
+
),
|
89
|
+
pricing=lf.ModelInfo.Pricing(
|
90
|
+
cost_per_1m_cached_input_tokens=0.275,
|
91
|
+
cost_per_1m_input_tokens=1.1,
|
92
|
+
cost_per_1m_output_tokens=4.4,
|
93
|
+
),
|
94
|
+
# Set to 1/3 of Tier 5 rate limits.
|
95
|
+
rate_limits=lf.ModelInfo.RateLimits(
|
96
|
+
max_requests_per_minute=10_000,
|
97
|
+
max_tokens_per_minute=50_000_000,
|
98
|
+
),
|
99
|
+
),
|
52
100
|
# GPT-4.5 models
|
53
101
|
OpenAIModelInfo(
|
54
102
|
model_id='gpt-4.5-preview-2025-02-27',
|
@@ -997,6 +1045,20 @@ class OpenAI(openai_compatible.OpenAICompatible):
|
|
997
1045
|
return super()._request_args(options)
|
998
1046
|
|
999
1047
|
|
1048
|
+
class GptO4Mini(OpenAI):
|
1049
|
+
"""GPT O4 mini."""
|
1050
|
+
|
1051
|
+
model = 'o4-mini'
|
1052
|
+
timeout = None
|
1053
|
+
|
1054
|
+
|
1055
|
+
class GptO3(OpenAI):
|
1056
|
+
"""GPT O3."""
|
1057
|
+
|
1058
|
+
model = 'o3'
|
1059
|
+
timeout = None
|
1060
|
+
|
1061
|
+
|
1000
1062
|
class Gpt45Preview_20250227(OpenAI): # pylint: disable=invalid-name
|
1001
1063
|
"""Gpt-4.5 Preview 2025-02-27."""
|
1002
1064
|
|
@@ -60,6 +60,8 @@ class OpenAICompatible(rest.REST):
|
|
60
60
|
args['stop'] = options.stop
|
61
61
|
if options.random_seed is not None:
|
62
62
|
args['seed'] = options.random_seed
|
63
|
+
if options.reasoning_effort is not None:
|
64
|
+
args['reasoning_effort'] = options.reasoning_effort
|
63
65
|
return args
|
64
66
|
|
65
67
|
def request(
|
@@ -156,7 +158,9 @@ class OpenAICompatible(rest.REST):
|
|
156
158
|
prompt_tokens=usage['prompt_tokens'],
|
157
159
|
completion_tokens=usage['completion_tokens'],
|
158
160
|
total_tokens=usage['total_tokens'],
|
159
|
-
|
161
|
+
completion_tokens_details=usage.get(
|
162
|
+
'completion_tokens_details', None
|
163
|
+
),
|
160
164
|
),
|
161
165
|
)
|
162
166
|
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/message_test.py
RENAMED
@@ -438,7 +438,7 @@ class MessageTest(unittest.TestCase):
|
|
438
438
|
self.assert_html_content(
|
439
439
|
ai_message.to_html(enable_summary_tooltip=False),
|
440
440
|
"""
|
441
|
-
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details open class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><details open class="pyglove int"><summary><div class="summary-name">x<span class="tooltip">metadata.result.x</span></div><div class="summary-title">int</div></summary><span class="simple-value int">1</span></details><details open class="pyglove int"><summary><div class="summary-name">y<span class="tooltip">metadata.result.y</span></div><div class="summary-title">int</div></summary><span class="simple-value int">2</span></details><details class="pyglove dict"><summary><div class="summary-name">z<span class="tooltip">metadata.result.z</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><details class="pyglove list"><summary><div class="summary-name">a<span class="tooltip">metadata.result.z.a</span></div><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></div></details></div></details></div><div class="message-usage"><details open class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><details open class="pyglove str"><summary><div class="summary-name">content<span class="tooltip">source.metadata.image.content</span></div><div class="summary-title">str</div></summary><span class="simple-value str">'foo'</span></details></div></details></div>this is a test</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><details open class="pyglove str"><summary><div class="summary-name">content<span class="tooltip">source.metadata.image.content</span></div><div class="summary-title">str</div></summary><span class="simple-value str">'foo'</span></details></div></details></div></details></div></div></details></div></details>
|
441
|
+
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details open class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><details open class="pyglove int"><summary><div class="summary-name">x<span class="tooltip">metadata.result.x</span></div><div class="summary-title">int</div></summary><span class="simple-value int">1</span></details><details open class="pyglove int"><summary><div class="summary-name">y<span class="tooltip">metadata.result.y</span></div><div class="summary-title">int</div></summary><span class="simple-value int">2</span></details><details class="pyglove dict"><summary><div class="summary-name">z<span class="tooltip">metadata.result.z</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><details class="pyglove list"><summary><div class="summary-name">a<span class="tooltip">metadata.result.z.a</span></div><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></div></details></div></details></div><div class="message-usage"><details open class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object-key str">completion_tokens_details</span><span class="tooltip">metadata.usage.completion_tokens_details</span></td><td><span class="simple-value none-type">None</span></td></tr></table></div></details></div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><details open class="pyglove str"><summary><div class="summary-name">content<span class="tooltip">source.metadata.image.content</span></div><div class="summary-title">str</div></summary><span class="simple-value str">'foo'</span></details></div></details></div>this is a test</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><details open class="pyglove str"><summary><div class="summary-name">content<span class="tooltip">source.metadata.image.content</span></div><div class="summary-title">str</div></summary><span class="simple-value str">'foo'</span></details></div></details></div></details></div></div></details></div></details>
|
442
442
|
"""
|
443
443
|
)
|
444
444
|
self.assert_html_content(
|
@@ -455,7 +455,7 @@ class MessageTest(unittest.TestCase):
|
|
455
455
|
),
|
456
456
|
),
|
457
457
|
"""
|
458
|
-
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">x</span><span class="tooltip">metadata.result.x</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">y</span><span class="tooltip">metadata.result.y</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">z</span><span class="tooltip">metadata.result.z</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">a</span><span class="tooltip">metadata.result.z.a</span></td><td><details class="pyglove list"><summary><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-usage"><details class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details open class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></div>this is a test</div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">image</span><span class="tooltip">source.metadata.image</span></td><td><details class="pyglove custom-modality"><summary><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></td></tr></table></div></details></div><details class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source.source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"></div><div class="message-text">User input</div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div></div></details></div></details></div></details>
|
458
|
+
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">x</span><span class="tooltip">metadata.result.x</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">y</span><span class="tooltip">metadata.result.y</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">z</span><span class="tooltip">metadata.result.z</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">a</span><span class="tooltip">metadata.result.z.a</span></td><td><details class="pyglove list"><summary><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-usage"><details class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object-key str">completion_tokens_details</span><span class="tooltip">metadata.usage.completion_tokens_details</span></td><td><span class="simple-value none-type">None</span></td></tr></table></div></details></div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details open class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></div>this is a test</div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">image</span><span class="tooltip">source.metadata.image</span></td><td><details class="pyglove custom-modality"><summary><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></td></tr></table></div></details></div><details class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source.source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"></div><div class="message-text">User input</div><div class="message-metadata"><details class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div></div></details></div></details></div></details>
|
459
459
|
"""
|
460
460
|
)
|
461
461
|
self.assert_html_content(
|
@@ -472,7 +472,7 @@ class MessageTest(unittest.TestCase):
|
|
472
472
|
),
|
473
473
|
),
|
474
474
|
"""
|
475
|
-
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details open class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">x</span><span class="tooltip">metadata.result.x</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">y</span><span class="tooltip">metadata.result.y</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">z</span><span class="tooltip">metadata.result.z</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">a</span><span class="tooltip">metadata.result.z.a</span></td><td><details class="pyglove list"><summary><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-usage"><details open class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></div>this is a test</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">image</span><span class="tooltip">source.metadata.image</span></td><td><details class="pyglove custom-modality"><summary><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></td></tr></table></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source.source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"></div><div class="message-text">User input</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div></div></details></div></details></div></details>
|
475
|
+
<details open class="pyglove ai-message lf-message"><summary><div class="summary-title lf-message">AIMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-response</span><span>lm-output</span></div><div class="message-text">My name is Gemini</div><div class="message-result"><details open class="pyglove dict"><summary><div class="summary-name">result<span class="tooltip">metadata.result</span></div><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">x</span><span class="tooltip">metadata.result.x</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">y</span><span class="tooltip">metadata.result.y</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">z</span><span class="tooltip">metadata.result.z</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">a</span><span class="tooltip">metadata.result.z.a</span></td><td><details class="pyglove list"><summary><div class="summary-title">List(...)</div></summary><div class="complex-value list"><table><tr><td><span class="object-key int">0</span><span class="tooltip">metadata.result.z.a[0]</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key int">1</span><span class="tooltip">metadata.result.z.a[1]</span></td><td><span class="simple-value int">323</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div></details></div><div class="message-usage"><details open class="pyglove lm-sampling-usage"><summary><div class="summary-name">llm usage<span class="tooltip">metadata.usage</span></div><div class="summary-title">LMSamplingUsage(...)</div></summary><div class="complex-value lm-sampling-usage"><table><tr><td><span class="object-key str">prompt_tokens</span><span class="tooltip">metadata.usage.prompt_tokens</span></td><td><span class="simple-value int">10</span></td></tr><tr><td><span class="object-key str">completion_tokens</span><span class="tooltip">metadata.usage.completion_tokens</span></td><td><span class="simple-value int">2</span></td></tr><tr><td><span class="object-key str">total_tokens</span><span class="tooltip">metadata.usage.total_tokens</span></td><td><span class="simple-value int">12</span></td></tr><tr><td><span class="object-key str">num_requests</span><span class="tooltip">metadata.usage.num_requests</span></td><td><span class="simple-value int">1</span></td></tr><tr><td><span class="object-key str">estimated_cost</span><span class="tooltip">metadata.usage.estimated_cost</span></td><td><span class="simple-value none-type">None</span></td></tr><tr><td><span class="object-key str">retry_stats</span><span class="tooltip">metadata.usage.retry_stats</span></td><td><details class="pyglove retry-stats"><summary><div class="summary-title">RetryStats(...)</div></summary><div class="complex-value retry-stats"><table><tr><td><span class="object-key str">num_occurences</span><span class="tooltip">metadata.usage.retry_stats.num_occurences</span></td><td><span class="simple-value int">0</span></td></tr><tr><td><span class="object-key str">total_wait_interval</span><span class="tooltip">metadata.usage.retry_stats.total_wait_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">total_call_interval</span><span class="tooltip">metadata.usage.retry_stats.total_call_interval</span></td><td><span class="simple-value float">0.0</span></td></tr><tr><td><span class="object-key str">errors</span><span class="tooltip">metadata.usage.retry_stats.errors</span></td><td><details class="pyglove dict"><summary><div class="summary-title">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object-key str">completion_tokens_details</span><span class="tooltip">metadata.usage.completion_tokens_details</span></td><td><span class="simple-value none-type">None</span></td></tr></table></div></details></div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>lm-input</span></div><div class="message-text">What is in this image?<div class="modality-in-text"><details class="pyglove custom-modality"><summary><div class="summary-name">image<span class="tooltip">source.metadata.image</span></div><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></div>this is a test</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><table><tr><td><span class="object-key str">image</span><span class="tooltip">source.metadata.image</span></td><td><details class="pyglove custom-modality"><summary><div class="summary-title">CustomModality(...)</div></summary><div class="complex-value custom-modality"><table><tr><td><span class="object-key str">content</span><span class="tooltip">source.metadata.image.content</span></td><td><span class="simple-value str">'foo'</span></td></tr></table></div></details></td></tr></table></div></details></div><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">source<span class="tooltip lf-message">source.source</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"></div><div class="message-text">User input</div><div class="message-metadata"><details open class="pyglove dict message-metadata"><summary><div class="summary-name message-metadata">metadata<span class="tooltip message-metadata">source.source.metadata</span></div><div class="summary-title message-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div></div></details></div></details></div></details>
|
476
476
|
"""
|
477
477
|
)
|
478
478
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/__init__.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action_eval.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/agentic/action_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/coding/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/component_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/concurrent_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/console_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/data/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/__init__.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/matching.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/patching.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/patching_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/scoring.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/evaluation.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/example.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/example_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/experiment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metrics.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/metrics_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/progress.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/reporting.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/runners.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/eval/v2/runners_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/language_model_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/anthropic.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/anthropic_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/azure_openai.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/__init__.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/base.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/cache/in_memory.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/compositional.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/deepseek.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/deepseek_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/fake_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/gemini_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/google_genai.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/groq_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/llama_cpp.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/llama_cpp_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/openai_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/rest_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/vertexai.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/llms/vertexai_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/logging_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/memories/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/__init__.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/audio.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/image.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/mime.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/mime_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/pdf.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/pdf_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modalities/video.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/modality_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/natural_language.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/sampling_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/mapping.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/parsing.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/querying.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/schema.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/structured/scoring.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/subscription.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/subscription_test.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/template_test.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/__init__.py
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/completion.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun/core/templates/selfplay.py
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/requires.txt
RENAMED
File without changes
|
{langfun-0.1.2.dev202504160804 → langfun-0.1.2.dev202504180804}/langfun.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|