langfun 0.1.2.dev202506240804__tar.gz → 0.1.2.dev202506260804__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.
Files changed (168) hide show
  1. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/language_model.py +56 -5
  3. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/language_model_test.py +22 -0
  4. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun.egg-info/PKG-INFO +1 -1
  5. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/LICENSE +0 -0
  6. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/README.md +0 -0
  7. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/__init__.py +0 -0
  8. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/__init__.py +0 -0
  9. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/agentic/__init__.py +0 -0
  10. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/agentic/action.py +0 -0
  11. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/agentic/action_eval.py +0 -0
  12. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/agentic/action_eval_test.py +0 -0
  13. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/agentic/action_test.py +0 -0
  14. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/__init__.py +0 -0
  15. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/__init__.py +0 -0
  16. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/correction.py +0 -0
  17. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/correction_test.py +0 -0
  18. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/execution.py +0 -0
  19. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/execution_test.py +0 -0
  20. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/generation.py +0 -0
  21. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/generation_test.py +0 -0
  22. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/parsing.py +0 -0
  23. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/parsing_test.py +0 -0
  24. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/sandboxing.py +0 -0
  25. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/coding/python/sandboxing_test.py +0 -0
  26. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/component.py +0 -0
  27. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/component_test.py +0 -0
  28. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/concurrent.py +0 -0
  29. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/concurrent_test.py +0 -0
  30. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/console.py +0 -0
  31. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/console_test.py +0 -0
  32. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/__init__.py +0 -0
  33. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/__init__.py +0 -0
  34. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/anthropic.py +0 -0
  35. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/anthropic_test.py +0 -0
  36. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/gemini.py +0 -0
  37. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/gemini_test.py +0 -0
  38. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/openai.py +0 -0
  39. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/data/conversion/openai_test.py +0 -0
  40. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/__init__.py +0 -0
  41. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/base.py +0 -0
  42. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/base_test.py +0 -0
  43. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/matching.py +0 -0
  44. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/matching_test.py +0 -0
  45. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/patching.py +0 -0
  46. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/patching_test.py +0 -0
  47. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/scoring.py +0 -0
  48. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/scoring_test.py +0 -0
  49. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/__init__.py +0 -0
  50. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/checkpointing.py +0 -0
  51. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  52. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  53. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/evaluation.py +0 -0
  54. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/evaluation_test.py +0 -0
  55. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/example.py +0 -0
  56. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/example_test.py +0 -0
  57. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/experiment.py +0 -0
  58. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/experiment_test.py +0 -0
  59. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/metric_values.py +0 -0
  60. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/metric_values_test.py +0 -0
  61. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/metrics.py +0 -0
  62. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/metrics_test.py +0 -0
  63. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/progress.py +0 -0
  64. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/progress_test.py +0 -0
  65. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/progress_tracking.py +0 -0
  66. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  67. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/reporting.py +0 -0
  68. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/reporting_test.py +0 -0
  69. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/runners.py +0 -0
  70. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/eval/v2/runners_test.py +0 -0
  71. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/langfunc.py +0 -0
  72. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/langfunc_test.py +0 -0
  73. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/__init__.py +0 -0
  74. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/anthropic.py +0 -0
  75. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/anthropic_test.py +0 -0
  76. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/azure_openai.py +0 -0
  77. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/azure_openai_test.py +0 -0
  78. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/cache/__init__.py +0 -0
  79. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/cache/base.py +0 -0
  80. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/cache/in_memory.py +0 -0
  81. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/cache/in_memory_test.py +0 -0
  82. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/compositional.py +0 -0
  83. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/compositional_test.py +0 -0
  84. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/deepseek.py +0 -0
  85. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/deepseek_test.py +0 -0
  86. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/fake.py +0 -0
  87. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/fake_test.py +0 -0
  88. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/gemini.py +0 -0
  89. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/gemini_test.py +0 -0
  90. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/google_genai.py +0 -0
  91. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/google_genai_test.py +0 -0
  92. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/groq.py +0 -0
  93. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/groq_test.py +0 -0
  94. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/llama_cpp.py +0 -0
  95. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/llama_cpp_test.py +0 -0
  96. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/openai.py +0 -0
  97. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/openai_compatible.py +0 -0
  98. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/openai_compatible_test.py +0 -0
  99. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/openai_test.py +0 -0
  100. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/rest.py +0 -0
  101. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/rest_test.py +0 -0
  102. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/vertexai.py +0 -0
  103. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/llms/vertexai_test.py +0 -0
  104. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/logging.py +0 -0
  105. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/logging_test.py +0 -0
  106. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/memories/__init__.py +0 -0
  107. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/memories/conversation_history.py +0 -0
  108. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/memories/conversation_history_test.py +0 -0
  109. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/memory.py +0 -0
  110. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/message.py +0 -0
  111. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/message_test.py +0 -0
  112. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/__init__.py +0 -0
  113. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/audio.py +0 -0
  114. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/audio_test.py +0 -0
  115. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/image.py +0 -0
  116. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/image_test.py +0 -0
  117. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/mime.py +0 -0
  118. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/mime_test.py +0 -0
  119. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/pdf.py +0 -0
  120. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/pdf_test.py +0 -0
  121. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/video.py +0 -0
  122. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modalities/video_test.py +0 -0
  123. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modality.py +0 -0
  124. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/modality_test.py +0 -0
  125. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/natural_language.py +0 -0
  126. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/natural_language_test.py +0 -0
  127. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/sampling.py +0 -0
  128. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/sampling_test.py +0 -0
  129. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/__init__.py +0 -0
  130. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/completion.py +0 -0
  131. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/completion_test.py +0 -0
  132. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/description.py +0 -0
  133. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/description_test.py +0 -0
  134. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/function_generation.py +0 -0
  135. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/function_generation_test.py +0 -0
  136. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/mapping.py +0 -0
  137. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/mapping_test.py +0 -0
  138. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/parsing.py +0 -0
  139. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/parsing_test.py +0 -0
  140. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/querying.py +0 -0
  141. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/querying_test.py +0 -0
  142. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/schema.py +0 -0
  143. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/schema_generation.py +0 -0
  144. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/schema_generation_test.py +0 -0
  145. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/schema_test.py +0 -0
  146. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/scoring.py +0 -0
  147. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/scoring_test.py +0 -0
  148. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/tokenization.py +0 -0
  149. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/structured/tokenization_test.py +0 -0
  150. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/subscription.py +0 -0
  151. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/subscription_test.py +0 -0
  152. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/template.py +0 -0
  153. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/template_test.py +0 -0
  154. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/__init__.py +0 -0
  155. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/completion.py +0 -0
  156. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/completion_test.py +0 -0
  157. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/conversation.py +0 -0
  158. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/conversation_test.py +0 -0
  159. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/demonstration.py +0 -0
  160. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/demonstration_test.py +0 -0
  161. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/selfplay.py +0 -0
  162. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun/core/templates/selfplay_test.py +0 -0
  163. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun.egg-info/SOURCES.txt +0 -0
  164. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun.egg-info/dependency_links.txt +0 -0
  165. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun.egg-info/requires.txt +0 -0
  166. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/langfun.egg-info/top_level.txt +0 -0
  167. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/setup.cfg +0 -0
  168. {langfun-0.1.2.dev202506240804 → langfun-0.1.2.dev202506260804}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202506240804
3
+ Version: 0.1.2.dev202506260804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -769,8 +769,25 @@ class LanguageModel(component.Component):
769
769
  cls._MODEL_FACTORY[model_id_or_prefix] = factory
770
770
 
771
771
  @classmethod
772
- def get(cls, model_id: str, *args, **kwargs):
773
- """Creates a language model instance from a model ID."""
772
+ def get(cls, model_str: str, *args, **kwargs) -> 'LanguageModel':
773
+ """Creates a language model instance from a model str.
774
+
775
+ Args:
776
+ model_str: A string that identifies the model. It can be a model ID or a
777
+ model ID with kwargs.
778
+ For example, "gpt-o3?temperature=0.1&n=2" will create a GPT-o3 model
779
+ with temperature set to 0.1 and n set to 2.
780
+ *args: Additional arguments to pass to the model factory.
781
+ **kwargs: Additional keyword arguments to pass to the model factory.
782
+ kwargs provided here will take precedence over kwargs parsed from
783
+ model_str.
784
+
785
+ Returns:
786
+ A language model instance.
787
+ """
788
+ model_id, model_kwargs = cls._parse_model_str(model_str)
789
+ model_kwargs.update(kwargs)
790
+
774
791
  factory = cls._MODEL_FACTORY.get(model_id)
775
792
  if factory is None:
776
793
  factories = []
@@ -786,11 +803,45 @@ class LanguageModel(component.Component):
786
803
  'Please specify a more specific model ID.'
787
804
  )
788
805
  factory = factories[0][1]
789
- return factory(model_id, *args, **kwargs)
806
+ return factory(model_id, *args, **model_kwargs)
790
807
 
791
808
  @classmethod
792
- def dir(cls):
793
- return sorted(list(LanguageModel._MODEL_FACTORY.keys()))
809
+ def _parse_model_str(cls, model_str: str) -> tuple[str, dict[str, Any]]:
810
+ """Parses a model string into model ID and kwargs."""
811
+ parts = model_str.split('?')
812
+ if len(parts) == 1:
813
+ return model_str, {}
814
+ elif len(parts) == 2:
815
+ model_id, kwargs_str = parts
816
+ kwargs = {}
817
+ for kv in kwargs_str.split('&'):
818
+ kv_parts = kv.split('=')
819
+ if len(kv_parts) != 2:
820
+ raise ValueError(f'Invalid kwargs in model string: {model_str!r}.')
821
+ k, v = kv_parts
822
+ if v.isnumeric():
823
+ v = int(v)
824
+ elif v.lower() in ('true', 'false'):
825
+ v = v.lower() == 'true'
826
+ else:
827
+ v = v.strip()
828
+ try:
829
+ v = float(v)
830
+ except ValueError:
831
+ pass
832
+ kwargs[k] = v
833
+ return model_id, kwargs
834
+ else:
835
+ raise ValueError(f'Invalid model string: {model_str!r}.')
836
+
837
+ @classmethod
838
+ def dir(cls, regex: str | None = None):
839
+ """Returns a list of model IDs that match the given regex."""
840
+ if regex is None:
841
+ return sorted(list(LanguageModel._MODEL_FACTORY.keys()))
842
+ return sorted(
843
+ [k for k in LanguageModel._MODEL_FACTORY.keys() if re.match(regex, k)]
844
+ )
794
845
 
795
846
  @pg.explicit_method_override
796
847
  def __init__(self, *args, **kwargs) -> None:
@@ -196,6 +196,8 @@ class LanguageModelTest(unittest.TestCase):
196
196
  self.assertEqual(lm.failures_before_attempt, 1)
197
197
  self.assertEqual(lm.sampling_options.temperature, 0.2)
198
198
  self.assertIn('MockModel', lm_lib.LanguageModel.dir())
199
+ self.assertIn('MockModel', lm_lib.LanguageModel.dir('Mock.*'))
200
+ self.assertEqual(lm_lib.LanguageModel.dir('NotMock.*'), [])
199
201
 
200
202
  lm_lib.LanguageModel.register('mock://.*', mock_model)
201
203
  lm_lib.LanguageModel.register('mock.*', mock_model)
@@ -206,6 +208,26 @@ class LanguageModelTest(unittest.TestCase):
206
208
  with self.assertRaisesRegex(ValueError, 'Model not found'):
207
209
  lm_lib.LanguageModel.get('non-existent://test2')
208
210
 
211
+ lm = lm_lib.LanguageModel.get('MockModel?temperature=0.1')
212
+ self.assertEqual(lm.sampling_options.temperature, 0.1)
213
+
214
+ lm = lm_lib.LanguageModel.get(
215
+ 'MockModel?temperature=0.1&name=my_model&logprobs=true&n=2'
216
+ )
217
+ self.assertEqual(lm.sampling_options.temperature, 0.1)
218
+ self.assertEqual(lm.sampling_options.n, 2)
219
+ self.assertTrue(lm.sampling_options.logprobs)
220
+ self.assertEqual(lm.name, 'my_model')
221
+
222
+ lm = lm_lib.LanguageModel.get('MockModel?temperature=0.1', temperature=0.2)
223
+ self.assertEqual(lm.sampling_options.temperature, 0.2)
224
+
225
+ with self.assertRaisesRegex(ValueError, 'Invalid model string'):
226
+ lm_lib.LanguageModel.get('MockModel??')
227
+
228
+ with self.assertRaisesRegex(ValueError, 'Invalid kwargs in model string'):
229
+ lm_lib.LanguageModel.get('MockModel?temperature=0.1&')
230
+
209
231
  def test_basics(self):
210
232
  lm = MockModel(1, temperature=0.5, top_k=2, max_attempts=2)
211
233
  self.assertEqual(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202506240804
3
+ Version: 0.1.2.dev202506260804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors