langfun 0.1.2.dev202510220805__tar.gz → 0.1.2.dev202510240805__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.

Files changed (200) hide show
  1. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/base_test.py +4 -4
  3. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/langfunc_test.py +2 -2
  4. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/language_model.py +9 -0
  5. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/__init__.py +5 -0
  6. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/anthropic.py +130 -0
  7. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/gemini.py +2 -5
  8. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/openai_compatible.py +2 -0
  9. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/vertexai.py +10 -0
  10. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun.egg-info/PKG-INFO +1 -1
  11. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/LICENSE +0 -0
  12. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/README.md +0 -0
  13. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/__init__.py +0 -0
  14. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/__init__.py +0 -0
  15. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/bounding_box_parser.py +0 -0
  16. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/bounding_box_parser_test.py +0 -0
  17. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/drawing.py +0 -0
  18. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/drawing_test.py +0 -0
  19. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/location.py +0 -0
  20. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/assistant/capabilities/gui/location_test.py +0 -0
  21. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/__init__.py +0 -0
  22. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/agentic/__init__.py +0 -0
  23. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/agentic/action.py +0 -0
  24. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/agentic/action_eval.py +0 -0
  25. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/agentic/action_eval_test.py +0 -0
  26. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/agentic/action_test.py +0 -0
  27. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/async_support.py +0 -0
  28. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/async_support_test.py +0 -0
  29. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/__init__.py +0 -0
  30. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/__init__.py +0 -0
  31. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/correction.py +0 -0
  32. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/correction_test.py +0 -0
  33. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/execution.py +0 -0
  34. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/execution_test.py +0 -0
  35. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/generation.py +0 -0
  36. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/generation_test.py +0 -0
  37. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/parsing.py +0 -0
  38. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/parsing_test.py +0 -0
  39. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/sandboxing.py +0 -0
  40. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/coding/python/sandboxing_test.py +0 -0
  41. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/component.py +0 -0
  42. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/component_test.py +0 -0
  43. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/concurrent.py +0 -0
  44. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/concurrent_test.py +0 -0
  45. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/console.py +0 -0
  46. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/console_test.py +0 -0
  47. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/__init__.py +0 -0
  48. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/__init__.py +0 -0
  49. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/anthropic.py +0 -0
  50. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/anthropic_test.py +0 -0
  51. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/gemini.py +0 -0
  52. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/gemini_test.py +0 -0
  53. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/openai.py +0 -0
  54. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/data/conversion/openai_test.py +0 -0
  55. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/__init__.py +0 -0
  56. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/base.py +0 -0
  57. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/matching.py +0 -0
  58. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/matching_test.py +0 -0
  59. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/patching.py +0 -0
  60. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/patching_test.py +0 -0
  61. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/scoring.py +0 -0
  62. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/scoring_test.py +0 -0
  63. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/__init__.py +0 -0
  64. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/checkpointing.py +0 -0
  65. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  66. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  67. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/evaluation.py +0 -0
  68. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/evaluation_test.py +0 -0
  69. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/example.py +0 -0
  70. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/example_test.py +0 -0
  71. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/experiment.py +0 -0
  72. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/experiment_test.py +0 -0
  73. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/metric_values.py +0 -0
  74. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/metric_values_test.py +0 -0
  75. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/metrics.py +0 -0
  76. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/metrics_test.py +0 -0
  77. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/progress.py +0 -0
  78. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/progress_test.py +0 -0
  79. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/progress_tracking.py +0 -0
  80. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  81. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/reporting.py +0 -0
  82. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/reporting_test.py +0 -0
  83. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/runners.py +0 -0
  84. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/eval/v2/runners_test.py +0 -0
  85. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/langfunc.py +0 -0
  86. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/language_model_test.py +0 -0
  87. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/anthropic_test.py +0 -0
  88. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/azure_openai.py +0 -0
  89. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/azure_openai_test.py +0 -0
  90. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/cache/__init__.py +0 -0
  91. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/cache/base.py +0 -0
  92. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/cache/in_memory.py +0 -0
  93. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/cache/in_memory_test.py +0 -0
  94. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/compositional.py +0 -0
  95. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/compositional_test.py +0 -0
  96. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/deepseek.py +0 -0
  97. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/deepseek_test.py +0 -0
  98. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/fake.py +0 -0
  99. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/fake_test.py +0 -0
  100. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/gemini_test.py +0 -0
  101. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/google_genai.py +0 -0
  102. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/google_genai_test.py +0 -0
  103. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/groq.py +0 -0
  104. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/groq_test.py +0 -0
  105. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/llama_cpp.py +0 -0
  106. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/llama_cpp_test.py +0 -0
  107. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/openai.py +0 -0
  108. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/openai_compatible_test.py +0 -0
  109. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/openai_test.py +0 -0
  110. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/rest.py +0 -0
  111. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/rest_test.py +0 -0
  112. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/llms/vertexai_test.py +0 -0
  113. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/logging.py +0 -0
  114. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/logging_test.py +0 -0
  115. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/__init__.py +0 -0
  116. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/client.py +0 -0
  117. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/client_test.py +0 -0
  118. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/session.py +0 -0
  119. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/testing/simple_mcp_client.py +0 -0
  120. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/testing/simple_mcp_server.py +0 -0
  121. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/mcp/tool.py +0 -0
  122. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/memories/__init__.py +0 -0
  123. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/memories/conversation_history.py +0 -0
  124. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/memories/conversation_history_test.py +0 -0
  125. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/memory.py +0 -0
  126. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/message.py +0 -0
  127. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/message_test.py +0 -0
  128. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/__init__.py +0 -0
  129. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/audio.py +0 -0
  130. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/audio_test.py +0 -0
  131. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/image.py +0 -0
  132. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/image_test.py +0 -0
  133. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/mime.py +0 -0
  134. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/mime_test.py +0 -0
  135. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/pdf.py +0 -0
  136. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/pdf_test.py +0 -0
  137. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/video.py +0 -0
  138. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modalities/video_test.py +0 -0
  139. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modality.py +0 -0
  140. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/modality_test.py +0 -0
  141. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/natural_language.py +0 -0
  142. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/natural_language_test.py +0 -0
  143. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/sampling.py +0 -0
  144. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/sampling_test.py +0 -0
  145. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/__init__.py +0 -0
  146. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/completion.py +0 -0
  147. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/completion_test.py +0 -0
  148. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/description.py +0 -0
  149. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/description_test.py +0 -0
  150. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/function_generation.py +0 -0
  151. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/function_generation_test.py +0 -0
  152. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/mapping.py +0 -0
  153. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/mapping_test.py +0 -0
  154. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/parsing.py +0 -0
  155. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/parsing_test.py +0 -0
  156. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/querying.py +0 -0
  157. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/querying_test.py +0 -0
  158. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/schema.py +0 -0
  159. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/schema_generation.py +0 -0
  160. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/schema_generation_test.py +0 -0
  161. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/schema_test.py +0 -0
  162. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/scoring.py +0 -0
  163. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/scoring_test.py +0 -0
  164. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/tokenization.py +0 -0
  165. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/structured/tokenization_test.py +0 -0
  166. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/subscription.py +0 -0
  167. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/subscription_test.py +0 -0
  168. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/template.py +0 -0
  169. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/template_test.py +0 -0
  170. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/__init__.py +0 -0
  171. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/completion.py +0 -0
  172. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/completion_test.py +0 -0
  173. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/conversation.py +0 -0
  174. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/conversation_test.py +0 -0
  175. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/demonstration.py +0 -0
  176. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/demonstration_test.py +0 -0
  177. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/selfplay.py +0 -0
  178. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/core/templates/selfplay_test.py +0 -0
  179. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/__init__.py +0 -0
  180. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/base_environment.py +0 -0
  181. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/base_feature.py +0 -0
  182. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/base_sandbox.py +0 -0
  183. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/base_test.py +0 -0
  184. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/__init__.py +0 -0
  185. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/base.py +0 -0
  186. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/event_logger.py +0 -0
  187. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/event_logger_test.py +0 -0
  188. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/metric_writer.py +0 -0
  189. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/event_handlers/metric_writer_test.py +0 -0
  190. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/interface.py +0 -0
  191. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/interface_test.py +0 -0
  192. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/load_balancers.py +0 -0
  193. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/load_balancers_test.py +0 -0
  194. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun/env/test_utils.py +0 -0
  195. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun.egg-info/SOURCES.txt +0 -0
  196. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun.egg-info/dependency_links.txt +0 -0
  197. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun.egg-info/requires.txt +0 -0
  198. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/langfun.egg-info/top_level.txt +0 -0
  199. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/setup.cfg +0 -0
  200. {langfun-0.1.2.dev202510220805 → langfun-0.1.2.dev202510240805}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510220805
3
+ Version: 0.1.2.dev202510240805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -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, 'e43392e4')
104
+ self.assertEqual(s.hash, 'ee958159')
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@2fbf1b05',
214
+ id='Evaluation@27a702cb',
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, 'de23bf31')
379
+ self.assertEqual(s.hash, 'f47532a7')
380
380
 
381
381
  summary = s.run(verbose=True)
382
382
  self.assertEqual(len(summary.evaluations), 2)
@@ -526,7 +526,7 @@ class SuiteTest(unittest.TestCase):
526
526
  lm=lm
527
527
  )
528
528
  # Test for persistent hash.
529
- self.assertEqual(s.hash, '1c42f93e')
529
+ self.assertEqual(s.hash, '4bd6a2f5')
530
530
  s.run()
531
531
  expected = {
532
532
  s.children[0].id: dict(
@@ -107,8 +107,8 @@ 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, reasoning_effort=None), cache=None,'
111
- ' max_concurrency=None, timeout=120.0, max_attempts=5,'
110
+ ' max_thinking_tokens=None, reasoning_effort=None, extras={}),'
111
+ ' cache=None, max_concurrency=None, timeout=120.0, max_attempts=5,'
112
112
  ' retry_interval=(5, 60), exponential_backoff=True,'
113
113
  ' max_retry_interval=300, debug=False))',
114
114
  )
@@ -584,6 +584,15 @@ class LMSamplingOptions(component.Component):
584
584
  ),
585
585
  ] = None
586
586
 
587
+ extras: Annotated[
588
+ dict[str, Any],
589
+ (
590
+ 'Extra arguments (e.g. configuration for tool calls) to pass to '
591
+ 'the model. This is model-specific, please check model '
592
+ 'implementation to see how to use this.'
593
+ ),
594
+ ] = {}
595
+
587
596
  def cache_key(self) -> tuple[Any, ...]:
588
597
  """Returns a tuple of current values as cache key."""
589
598
  return (
@@ -151,6 +151,9 @@ from langfun.core.llms.openai import Gpt35
151
151
 
152
152
  # Anthropic models.
153
153
 
154
+ from langfun.core.llms.anthropic import Claude45
155
+ from langfun.core.llms.anthropic import Claude45Haiku_20251001
156
+ from langfun.core.llms.anthropic import Claude45Sonnet_20250929
154
157
  from langfun.core.llms.anthropic import Claude4
155
158
  from langfun.core.llms.anthropic import Claude4Sonnet_20250514
156
159
  from langfun.core.llms.anthropic import Claude4Opus_20250514
@@ -168,6 +171,8 @@ from langfun.core.llms.anthropic import Claude3Haiku
168
171
  from langfun.core.llms.anthropic import Claude3Haiku_20240307
169
172
 
170
173
  from langfun.core.llms.vertexai import VertexAIAnthropic
174
+ from langfun.core.llms.vertexai import VertexAIClaude45Haiku_20251001
175
+ from langfun.core.llms.vertexai import VertexAIClaude45Sonnet_20250929
171
176
  from langfun.core.llms.vertexai import VertexAIClaude4Opus_20250514
172
177
  from langfun.core.llms.vertexai import VertexAIClaude4Sonnet_20250514
173
178
  from langfun.core.llms.vertexai import VertexAIClaude37Sonnet_20250219
@@ -59,6 +59,60 @@ class AnthropicModelInfo(lf.ModelInfo):
59
59
 
60
60
 
61
61
  SUPPORTED_MODELS = [
62
+ AnthropicModelInfo(
63
+ model_id='claude-haiku-4-5-20251001',
64
+ provider='Anthropic',
65
+ in_service=True,
66
+ description='Claude 4.5 Haiku model (10/15/2025).',
67
+ release_date=datetime.datetime(2025, 10, 15),
68
+ input_modalities=(
69
+ AnthropicModelInfo.INPUT_IMAGE_TYPES
70
+ + AnthropicModelInfo.INPUT_DOC_TYPES
71
+ ),
72
+ context_length=lf.ModelInfo.ContextLength(
73
+ max_input_tokens=200_000,
74
+ max_output_tokens=64_000,
75
+ ),
76
+ pricing=lf.ModelInfo.Pricing(
77
+ cost_per_1m_cached_input_tokens=0.1,
78
+ cost_per_1m_input_tokens=1,
79
+ cost_per_1m_output_tokens=5,
80
+ ),
81
+ rate_limits=AnthropicModelInfo.RateLimits(
82
+ # Tier 4 rate limits
83
+ max_requests_per_minute=4000,
84
+ max_input_tokens_per_minute=4_000_000,
85
+ max_output_tokens_per_minute=800_000,
86
+ ),
87
+ ),
88
+ AnthropicModelInfo(
89
+ model_id='claude-sonnet-4-5-20250929',
90
+ provider='Anthropic',
91
+ in_service=True,
92
+ description='Claude 4.5 Sonnet model (9/29/2025).',
93
+ release_date=datetime.datetime(2025, 9, 29),
94
+ input_modalities=(
95
+ AnthropicModelInfo.INPUT_IMAGE_TYPES
96
+ + AnthropicModelInfo.INPUT_DOC_TYPES
97
+ ),
98
+ context_length=lf.ModelInfo.ContextLength(
99
+ max_input_tokens=200_000,
100
+ max_output_tokens=64_000,
101
+ ),
102
+ pricing=lf.ModelInfo.Pricing(
103
+ cost_per_1m_cached_input_tokens=0.3,
104
+ cost_per_1m_input_tokens=3,
105
+ cost_per_1m_output_tokens=15,
106
+ ),
107
+ rate_limits=AnthropicModelInfo.RateLimits(
108
+ # Tier 4 rate limits
109
+ # This rate limit is a total limit that applies to combined traffic
110
+ # across both Sonnet 4 and Sonnet 4.5.
111
+ max_requests_per_minute=4000,
112
+ max_input_tokens_per_minute=2_000_000,
113
+ max_output_tokens_per_minute=400_000,
114
+ ),
115
+ ),
62
116
  AnthropicModelInfo(
63
117
  model_id='claude-4-opus-20250514',
64
118
  provider='Anthropic',
@@ -190,6 +244,62 @@ SUPPORTED_MODELS = [
190
244
  max_output_tokens_per_minute=80_000,
191
245
  ),
192
246
  ),
247
+ AnthropicModelInfo(
248
+ model_id='claude-haiku-4-5@20251001',
249
+ alias_for='claude-haiku-4-5-20251001',
250
+ provider='VertexAI',
251
+ in_service=True,
252
+ description='Claude 4.5 Haiku model served on VertexAI (10/15/2025).',
253
+ release_date=datetime.datetime(2025, 10, 15),
254
+ input_modalities=(
255
+ AnthropicModelInfo.INPUT_IMAGE_TYPES
256
+ + AnthropicModelInfo.INPUT_DOC_TYPES
257
+ ),
258
+ context_length=lf.ModelInfo.ContextLength(
259
+ max_input_tokens=200_000,
260
+ max_output_tokens=64_000,
261
+ ),
262
+ pricing=lf.ModelInfo.Pricing(
263
+ # For global endpoint
264
+ cost_per_1m_cached_input_tokens=0.1,
265
+ cost_per_1m_input_tokens=1,
266
+ cost_per_1m_output_tokens=5,
267
+ ),
268
+ rate_limits=AnthropicModelInfo.RateLimits(
269
+ # For global endpoint
270
+ max_requests_per_minute=2500,
271
+ max_input_tokens_per_minute=200_000,
272
+ max_output_tokens_per_minute=0,
273
+ ),
274
+ ),
275
+ AnthropicModelInfo(
276
+ model_id='claude-sonnet-4-5@20250929',
277
+ alias_for='claude-sonnet-4-5-20250929',
278
+ provider='VertexAI',
279
+ in_service=True,
280
+ description='Claude 4.5 Sonnet model (9/29/2025).',
281
+ release_date=datetime.datetime(2025, 9, 29),
282
+ input_modalities=(
283
+ AnthropicModelInfo.INPUT_IMAGE_TYPES
284
+ + AnthropicModelInfo.INPUT_DOC_TYPES
285
+ ),
286
+ context_length=lf.ModelInfo.ContextLength(
287
+ max_input_tokens=200_000,
288
+ max_output_tokens=64_000,
289
+ ),
290
+ pricing=lf.ModelInfo.Pricing(
291
+ # For global endpoint
292
+ cost_per_1m_cached_input_tokens=0.3,
293
+ cost_per_1m_input_tokens=3,
294
+ cost_per_1m_output_tokens=15,
295
+ ),
296
+ rate_limits=AnthropicModelInfo.RateLimits(
297
+ # For global endpoint
298
+ max_requests_per_minute=1500,
299
+ max_input_tokens_per_minute=200_000,
300
+ max_output_tokens_per_minute=0,
301
+ ),
302
+ ),
193
303
  AnthropicModelInfo(
194
304
  model_id='claude-opus-4@20250514',
195
305
  alias_for='claude-opus-4-20250514',
@@ -658,6 +768,8 @@ class Anthropic(rest.REST):
658
768
  args.pop('temperature', None)
659
769
  args.pop('top_k', None)
660
770
  args.pop('top_p', None)
771
+ if options.extras:
772
+ args.update(options.extras)
661
773
  return args
662
774
 
663
775
  def result(self, json: dict[str, Any]) -> lf.LMSamplingResult:
@@ -679,6 +791,24 @@ class Anthropic(rest.REST):
679
791
  return super()._error(status_code, content)
680
792
 
681
793
 
794
+ class Claude45(Anthropic):
795
+ """Base class for Claude 4.5 models."""
796
+
797
+
798
+ # pylint: disable=invalid-name
799
+ class Claude45Haiku_20251001(Claude45):
800
+ """Claude 4.5 Haiku model 20251001."""
801
+
802
+ model = 'claude-haiku-4-5-20251001'
803
+
804
+
805
+ # pylint: disable=invalid-name
806
+ class Claude45Sonnet_20250929(Claude45):
807
+ """Claude 4.5 Sonnet model 20250929."""
808
+
809
+ model = 'claude-sonnet-4-5-20250929'
810
+
811
+
682
812
  class Claude4(Anthropic):
683
813
  """Base class for Claude 4 models."""
684
814
 
@@ -752,11 +752,8 @@ class Gemini(rest.REST):
752
752
  prompt.as_format('gemini', chunk_preprocessor=modality_conversion)
753
753
  )
754
754
  request['contents'] = contents
755
- # Users could use `metadata_gemini_tools` to pass Gemini tools. For example,
756
- # for enabling Search Grounding, users could pass:
757
- # metadata_gemini_tools=[{'google_search': {}}]
758
- if tools := prompt.metadata.get('gemini_tools'):
759
- request['tools'] = tools
755
+ if sampling_options.extras:
756
+ request.update(sampling_options.extras)
760
757
  return request
761
758
 
762
759
  def _generation_config(
@@ -62,6 +62,8 @@ class OpenAICompatible(rest.REST):
62
62
  args['seed'] = options.random_seed
63
63
  if options.reasoning_effort is not None:
64
64
  args['reasoning_effort'] = options.reasoning_effort
65
+ if options.extras:
66
+ args.update(options.extras)
65
67
  return args
66
68
 
67
69
  def request(
@@ -369,6 +369,16 @@ class VertexAIAnthropic(VertexAI, anthropic.Anthropic):
369
369
  # pylint: disable=invalid-name
370
370
 
371
371
 
372
+ class VertexAIClaude45Haiku_20251001(VertexAIAnthropic):
373
+ """Anthropic's Claude 4.5 Haiku model on VertexAI."""
374
+ model = 'claude-haiku-4-5@20251001'
375
+
376
+
377
+ class VertexAIClaude45Sonnet_20250929(VertexAIAnthropic):
378
+ """Anthropic's Claude 4.5 Sonnet model on VertexAI."""
379
+ model = 'claude-sonnet-4-5@20250929'
380
+
381
+
372
382
  class VertexAIClaude4Opus_20250514(VertexAIAnthropic):
373
383
  """Anthropic's Claude 4 Opus model on VertexAI."""
374
384
  model = 'claude-opus-4@20250514'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510220805
3
+ Version: 0.1.2.dev202510240805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors