langfun 0.1.2.dev202506250804__tar.gz → 0.1.2.dev202506270804__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.dev202506250804 → langfun-0.1.2.dev202506270804}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/__init__.py +0 -1
  3. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/sandboxing.py +1 -28
  4. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/language_model.py +56 -5
  5. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/language_model_test.py +22 -0
  6. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun.egg-info/PKG-INFO +1 -1
  7. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/LICENSE +0 -0
  8. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/README.md +0 -0
  9. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/__init__.py +0 -0
  10. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/__init__.py +0 -0
  11. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/agentic/__init__.py +0 -0
  12. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/agentic/action.py +0 -0
  13. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/agentic/action_eval.py +0 -0
  14. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/agentic/action_eval_test.py +0 -0
  15. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/agentic/action_test.py +0 -0
  16. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/__init__.py +0 -0
  17. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/correction.py +0 -0
  18. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/correction_test.py +0 -0
  19. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/execution.py +0 -0
  20. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/execution_test.py +0 -0
  21. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/generation.py +0 -0
  22. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/generation_test.py +0 -0
  23. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/parsing.py +0 -0
  24. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/parsing_test.py +0 -0
  25. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/coding/python/sandboxing_test.py +0 -0
  26. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/component.py +0 -0
  27. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/component_test.py +0 -0
  28. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/concurrent.py +0 -0
  29. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/concurrent_test.py +0 -0
  30. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/console.py +0 -0
  31. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/console_test.py +0 -0
  32. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/__init__.py +0 -0
  33. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/__init__.py +0 -0
  34. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/anthropic.py +0 -0
  35. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/anthropic_test.py +0 -0
  36. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/gemini.py +0 -0
  37. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/gemini_test.py +0 -0
  38. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/openai.py +0 -0
  39. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/data/conversion/openai_test.py +0 -0
  40. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/__init__.py +0 -0
  41. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/base.py +0 -0
  42. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/base_test.py +0 -0
  43. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/matching.py +0 -0
  44. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/matching_test.py +0 -0
  45. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/patching.py +0 -0
  46. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/patching_test.py +0 -0
  47. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/scoring.py +0 -0
  48. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/scoring_test.py +0 -0
  49. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/__init__.py +0 -0
  50. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/checkpointing.py +0 -0
  51. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  52. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  53. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/evaluation.py +0 -0
  54. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/evaluation_test.py +0 -0
  55. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/example.py +0 -0
  56. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/example_test.py +0 -0
  57. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/experiment.py +0 -0
  58. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/experiment_test.py +0 -0
  59. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/metric_values.py +0 -0
  60. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/metric_values_test.py +0 -0
  61. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/metrics.py +0 -0
  62. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/metrics_test.py +0 -0
  63. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/progress.py +0 -0
  64. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/progress_test.py +0 -0
  65. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/progress_tracking.py +0 -0
  66. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  67. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/reporting.py +0 -0
  68. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/reporting_test.py +0 -0
  69. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/runners.py +0 -0
  70. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/eval/v2/runners_test.py +0 -0
  71. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/langfunc.py +0 -0
  72. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/langfunc_test.py +0 -0
  73. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/__init__.py +0 -0
  74. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/anthropic.py +0 -0
  75. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/anthropic_test.py +0 -0
  76. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/azure_openai.py +0 -0
  77. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/azure_openai_test.py +0 -0
  78. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/cache/__init__.py +0 -0
  79. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/cache/base.py +0 -0
  80. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/cache/in_memory.py +0 -0
  81. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/cache/in_memory_test.py +0 -0
  82. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/compositional.py +0 -0
  83. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/compositional_test.py +0 -0
  84. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/deepseek.py +0 -0
  85. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/deepseek_test.py +0 -0
  86. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/fake.py +0 -0
  87. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/fake_test.py +0 -0
  88. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/gemini.py +0 -0
  89. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/gemini_test.py +0 -0
  90. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/google_genai.py +0 -0
  91. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/google_genai_test.py +0 -0
  92. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/groq.py +0 -0
  93. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/groq_test.py +0 -0
  94. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/llama_cpp.py +0 -0
  95. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/llama_cpp_test.py +0 -0
  96. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/openai.py +0 -0
  97. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/openai_compatible.py +0 -0
  98. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/openai_compatible_test.py +0 -0
  99. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/openai_test.py +0 -0
  100. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/rest.py +0 -0
  101. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/rest_test.py +0 -0
  102. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/vertexai.py +0 -0
  103. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/llms/vertexai_test.py +0 -0
  104. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/logging.py +0 -0
  105. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/logging_test.py +0 -0
  106. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/memories/__init__.py +0 -0
  107. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/memories/conversation_history.py +0 -0
  108. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/memories/conversation_history_test.py +0 -0
  109. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/memory.py +0 -0
  110. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/message.py +0 -0
  111. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/message_test.py +0 -0
  112. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/__init__.py +0 -0
  113. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/audio.py +0 -0
  114. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/audio_test.py +0 -0
  115. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/image.py +0 -0
  116. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/image_test.py +0 -0
  117. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/mime.py +0 -0
  118. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/mime_test.py +0 -0
  119. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/pdf.py +0 -0
  120. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/pdf_test.py +0 -0
  121. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/video.py +0 -0
  122. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modalities/video_test.py +0 -0
  123. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modality.py +0 -0
  124. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/modality_test.py +0 -0
  125. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/natural_language.py +0 -0
  126. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/natural_language_test.py +0 -0
  127. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/sampling.py +0 -0
  128. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/sampling_test.py +0 -0
  129. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/__init__.py +0 -0
  130. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/completion.py +0 -0
  131. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/completion_test.py +0 -0
  132. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/description.py +0 -0
  133. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/description_test.py +0 -0
  134. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/function_generation.py +0 -0
  135. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/function_generation_test.py +0 -0
  136. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/mapping.py +0 -0
  137. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/mapping_test.py +0 -0
  138. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/parsing.py +0 -0
  139. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/parsing_test.py +0 -0
  140. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/querying.py +0 -0
  141. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/querying_test.py +0 -0
  142. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/schema.py +0 -0
  143. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/schema_generation.py +0 -0
  144. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/schema_generation_test.py +0 -0
  145. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/schema_test.py +0 -0
  146. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/scoring.py +0 -0
  147. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/scoring_test.py +0 -0
  148. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/tokenization.py +0 -0
  149. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/structured/tokenization_test.py +0 -0
  150. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/subscription.py +0 -0
  151. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/subscription_test.py +0 -0
  152. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/template.py +0 -0
  153. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/template_test.py +0 -0
  154. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/__init__.py +0 -0
  155. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/completion.py +0 -0
  156. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/completion_test.py +0 -0
  157. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/conversation.py +0 -0
  158. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/conversation_test.py +0 -0
  159. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/demonstration.py +0 -0
  160. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/demonstration_test.py +0 -0
  161. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/selfplay.py +0 -0
  162. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun/core/templates/selfplay_test.py +0 -0
  163. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun.egg-info/SOURCES.txt +0 -0
  164. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun.egg-info/dependency_links.txt +0 -0
  165. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun.egg-info/requires.txt +0 -0
  166. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/langfun.egg-info/top_level.txt +0 -0
  167. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/setup.cfg +0 -0
  168. {langfun-0.1.2.dev202506250804 → langfun-0.1.2.dev202506270804}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202506250804
3
+ Version: 0.1.2.dev202506270804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -32,7 +32,6 @@ from langfun.core.coding.python.correction import correct
32
32
  from langfun.core.coding.python.correction import run_with_correction
33
33
  from langfun.core.coding.python.correction import CodeWithError
34
34
 
35
- from langfun.core.coding.python.sandboxing import Sandbox
36
35
  from langfun.core.coding.python.sandboxing import SandboxOutput
37
36
  from langfun.core.coding.python.sandboxing import MultiProcessingSandbox
38
37
 
@@ -16,7 +16,7 @@
16
16
  import abc
17
17
  import os
18
18
  import tempfile
19
- from typing import Annotated, Protocol, Self
19
+ from typing import Annotated
20
20
 
21
21
  from langfun.core.coding.python import parsing
22
22
  import pyglove as pg
@@ -41,33 +41,6 @@ class SandboxOutput(pg.Object):
41
41
  ] = {}
42
42
 
43
43
 
44
- class Sandbox(Protocol):
45
- """Interface for Python sandbox."""
46
-
47
- def run(
48
- self,
49
- code: str,
50
- **kwargs,
51
- ) -> SandboxOutput:
52
- """Runs code in the sandbox."""
53
-
54
- def upload(
55
- self,
56
- path: str,
57
- **kwargs,
58
- ) -> str:
59
- """Uploads a file to the sandbox."""
60
-
61
- def clone(self) -> 'Sandbox':
62
- """Clones the sandbox."""
63
-
64
- def __enter__(self) -> Self:
65
- """Sandboxes should be used as a context manager."""
66
-
67
- def __exit__(self, exc_type, exc_value, traceback) -> None:
68
- """Sandboxes should be used as a context manager."""
69
-
70
-
71
44
  class BaseSandbox(pg.Object):
72
45
  """Interface and partial implementation for Python sandbox."""
73
46
 
@@ -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.dev202506250804
3
+ Version: 0.1.2.dev202506270804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors