langfun 0.1.2.dev202510060804__tar.gz → 0.1.2.dev202510070805__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 (193) hide show
  1. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/agentic/action.py +22 -1
  3. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/agentic/action_test.py +10 -1
  4. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/language_model.py +48 -15
  5. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun.egg-info/PKG-INFO +1 -1
  6. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/LICENSE +0 -0
  7. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/README.md +0 -0
  8. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/__init__.py +0 -0
  9. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/__init__.py +0 -0
  10. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/bounding_box_parser.py +0 -0
  11. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/bounding_box_parser_test.py +0 -0
  12. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/drawing.py +0 -0
  13. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/drawing_test.py +0 -0
  14. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/location.py +0 -0
  15. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/assistant/capabilities/gui/location_test.py +0 -0
  16. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/__init__.py +0 -0
  17. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/agentic/__init__.py +0 -0
  18. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/agentic/action_eval.py +0 -0
  19. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/agentic/action_eval_test.py +0 -0
  20. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/async_support.py +0 -0
  21. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/async_support_test.py +0 -0
  22. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/__init__.py +0 -0
  23. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/__init__.py +0 -0
  24. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/correction.py +0 -0
  25. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/correction_test.py +0 -0
  26. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/execution.py +0 -0
  27. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/execution_test.py +0 -0
  28. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/generation.py +0 -0
  29. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/generation_test.py +0 -0
  30. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/parsing.py +0 -0
  31. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/parsing_test.py +0 -0
  32. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/sandboxing.py +0 -0
  33. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/coding/python/sandboxing_test.py +0 -0
  34. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/component.py +0 -0
  35. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/component_test.py +0 -0
  36. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/concurrent.py +0 -0
  37. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/concurrent_test.py +0 -0
  38. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/console.py +0 -0
  39. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/console_test.py +0 -0
  40. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/__init__.py +0 -0
  41. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/__init__.py +0 -0
  42. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/anthropic.py +0 -0
  43. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/anthropic_test.py +0 -0
  44. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/gemini.py +0 -0
  45. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/gemini_test.py +0 -0
  46. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/openai.py +0 -0
  47. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/data/conversion/openai_test.py +0 -0
  48. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/__init__.py +0 -0
  49. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/base.py +0 -0
  50. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/base_test.py +0 -0
  51. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/matching.py +0 -0
  52. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/matching_test.py +0 -0
  53. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/patching.py +0 -0
  54. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/patching_test.py +0 -0
  55. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/scoring.py +0 -0
  56. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/scoring_test.py +0 -0
  57. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/__init__.py +0 -0
  58. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/checkpointing.py +0 -0
  59. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  60. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  61. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/evaluation.py +0 -0
  62. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/evaluation_test.py +0 -0
  63. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/example.py +0 -0
  64. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/example_test.py +0 -0
  65. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/experiment.py +0 -0
  66. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/experiment_test.py +0 -0
  67. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/metric_values.py +0 -0
  68. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/metric_values_test.py +0 -0
  69. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/metrics.py +0 -0
  70. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/metrics_test.py +0 -0
  71. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/progress.py +0 -0
  72. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/progress_test.py +0 -0
  73. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/progress_tracking.py +0 -0
  74. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  75. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/reporting.py +0 -0
  76. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/reporting_test.py +0 -0
  77. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/runners.py +0 -0
  78. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/eval/v2/runners_test.py +0 -0
  79. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/langfunc.py +0 -0
  80. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/langfunc_test.py +0 -0
  81. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/language_model_test.py +0 -0
  82. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/__init__.py +0 -0
  83. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/anthropic.py +0 -0
  84. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/anthropic_test.py +0 -0
  85. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/azure_openai.py +0 -0
  86. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/azure_openai_test.py +0 -0
  87. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/cache/__init__.py +0 -0
  88. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/cache/base.py +0 -0
  89. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/cache/in_memory.py +0 -0
  90. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/cache/in_memory_test.py +0 -0
  91. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/compositional.py +0 -0
  92. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/compositional_test.py +0 -0
  93. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/deepseek.py +0 -0
  94. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/deepseek_test.py +0 -0
  95. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/fake.py +0 -0
  96. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/fake_test.py +0 -0
  97. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/gemini.py +0 -0
  98. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/gemini_test.py +0 -0
  99. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/google_genai.py +0 -0
  100. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/google_genai_test.py +0 -0
  101. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/groq.py +0 -0
  102. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/groq_test.py +0 -0
  103. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/llama_cpp.py +0 -0
  104. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/llama_cpp_test.py +0 -0
  105. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/openai.py +0 -0
  106. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/openai_compatible.py +0 -0
  107. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/openai_compatible_test.py +0 -0
  108. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/openai_test.py +0 -0
  109. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/rest.py +0 -0
  110. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/rest_test.py +0 -0
  111. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/vertexai.py +0 -0
  112. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/llms/vertexai_test.py +0 -0
  113. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/logging.py +0 -0
  114. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/logging_test.py +0 -0
  115. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/memories/__init__.py +0 -0
  116. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/memories/conversation_history.py +0 -0
  117. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/memories/conversation_history_test.py +0 -0
  118. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/memory.py +0 -0
  119. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/message.py +0 -0
  120. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/message_test.py +0 -0
  121. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/__init__.py +0 -0
  122. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/audio.py +0 -0
  123. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/audio_test.py +0 -0
  124. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/image.py +0 -0
  125. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/image_test.py +0 -0
  126. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/mime.py +0 -0
  127. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/mime_test.py +0 -0
  128. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/pdf.py +0 -0
  129. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/pdf_test.py +0 -0
  130. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/video.py +0 -0
  131. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modalities/video_test.py +0 -0
  132. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modality.py +0 -0
  133. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/modality_test.py +0 -0
  134. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/natural_language.py +0 -0
  135. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/natural_language_test.py +0 -0
  136. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/sampling.py +0 -0
  137. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/sampling_test.py +0 -0
  138. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/__init__.py +0 -0
  139. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/completion.py +0 -0
  140. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/completion_test.py +0 -0
  141. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/description.py +0 -0
  142. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/description_test.py +0 -0
  143. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/function_generation.py +0 -0
  144. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/function_generation_test.py +0 -0
  145. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/mapping.py +0 -0
  146. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/mapping_test.py +0 -0
  147. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/parsing.py +0 -0
  148. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/parsing_test.py +0 -0
  149. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/querying.py +0 -0
  150. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/querying_test.py +0 -0
  151. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/schema.py +0 -0
  152. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/schema_generation.py +0 -0
  153. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/schema_generation_test.py +0 -0
  154. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/schema_test.py +0 -0
  155. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/scoring.py +0 -0
  156. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/scoring_test.py +0 -0
  157. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/tokenization.py +0 -0
  158. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/structured/tokenization_test.py +0 -0
  159. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/subscription.py +0 -0
  160. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/subscription_test.py +0 -0
  161. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/template.py +0 -0
  162. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/template_test.py +0 -0
  163. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/__init__.py +0 -0
  164. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/completion.py +0 -0
  165. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/completion_test.py +0 -0
  166. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/conversation.py +0 -0
  167. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/conversation_test.py +0 -0
  168. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/demonstration.py +0 -0
  169. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/demonstration_test.py +0 -0
  170. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/selfplay.py +0 -0
  171. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/core/templates/selfplay_test.py +0 -0
  172. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/__init__.py +0 -0
  173. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/base_environment.py +0 -0
  174. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/base_feature.py +0 -0
  175. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/base_sandbox.py +0 -0
  176. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/base_test.py +0 -0
  177. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/__init__.py +0 -0
  178. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/base.py +0 -0
  179. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/event_logger.py +0 -0
  180. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/event_logger_test.py +0 -0
  181. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/metric_writer.py +0 -0
  182. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/event_handlers/metric_writer_test.py +0 -0
  183. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/interface.py +0 -0
  184. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/interface_test.py +0 -0
  185. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/load_balancers.py +0 -0
  186. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/load_balancers_test.py +0 -0
  187. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun/env/test_utils.py +0 -0
  188. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun.egg-info/SOURCES.txt +0 -0
  189. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun.egg-info/dependency_links.txt +0 -0
  190. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun.egg-info/requires.txt +0 -0
  191. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/langfun.egg-info/top_level.txt +0 -0
  192. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/setup.cfg +0 -0
  193. {langfun-0.1.2.dev202510060804 → langfun-0.1.2.dev202510070805}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510060804
3
+ Version: 0.1.2.dev202510070805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -187,11 +187,23 @@ class Action(pg.Object):
187
187
  self._session = None
188
188
  self._invocation: ActionInvocation | None = None
189
189
 
190
+ # NOTE(daiyip): Users could use `self._state` to keep track of the state
191
+ # during the execution of the action.
192
+ # Strictly speaking action state should better fit into
193
+ # ActionInvocation, we make it a property of Action as it's usually
194
+ # initialized before `__call__` is called.
195
+ self._state: Any = None
196
+
190
197
  @property
191
198
  def session(self) -> Optional['Session']:
192
199
  """Returns the session started by this action."""
193
200
  return self._session
194
201
 
202
+ @property
203
+ def state(self) -> Any:
204
+ """Returns the state of the action."""
205
+ return self._state
206
+
195
207
  @property
196
208
  def result(self) -> Any:
197
209
  """Returns the result of the action."""
@@ -852,7 +864,11 @@ class ParallelExecutions(pg.Object, pg.views.html.HtmlTreeView.Extension):
852
864
 
853
865
  class ActionInvocation(pg.Object, pg.views.html.HtmlTreeView.Extension):
854
866
  """A class for capturing the invocation of an action."""
855
- action: Action
867
+
868
+ action: Annotated[
869
+ Action,
870
+ 'The action being invoked.'
871
+ ]
856
872
 
857
873
  result: Annotated[
858
874
  Any,
@@ -931,6 +947,11 @@ class ActionInvocation(pg.Object, pg.views.html.HtmlTreeView.Extension):
931
947
  """Returns True if the action invocation has an error."""
932
948
  return self.error is not None
933
949
 
950
+ @property
951
+ def state(self) -> Any:
952
+ """Returns the state of the action."""
953
+ return self.action.state
954
+
934
955
  @property
935
956
  def logs(self) -> list[lf.logging.LogEntry]:
936
957
  """Returns immediate child logs from execution sequence."""
@@ -66,12 +66,18 @@ class Foo(action_lib.Action):
66
66
  time.sleep(self.simulate_execution_time[2])
67
67
  return lf_structured.query(f'subtask_{i}', lm=lm)
68
68
 
69
+ self._state = []
69
70
  for i, output, error in session.concurrent_map(
70
- _sub_task, range(3), max_workers=2, silence_on_errors=None,
71
+ _sub_task,
72
+ range(3),
73
+ max_workers=2,
74
+ ordered=True,
75
+ silence_on_errors=None,
71
76
  ):
72
77
  assert isinstance(i, int), i
73
78
  assert isinstance(output, str), output
74
79
  assert error is None, error
80
+ self._state.append(i)
75
81
  return self.x + Bar(
76
82
  simulate_action_error=self.simulate_action_error,
77
83
  simulate_execution_time=self.simulate_execution_time[3]
@@ -118,6 +124,7 @@ class SessionTest(unittest.TestCase):
118
124
  foo = Foo(1)
119
125
  self.assertIsNone(foo.session)
120
126
  self.assertIsNone(foo.invocation)
127
+ self.assertIsNone(foo.state)
121
128
  self.assertIsNone(foo.result)
122
129
  self.assertIsNone(foo.metadata)
123
130
 
@@ -136,6 +143,8 @@ class SessionTest(unittest.TestCase):
136
143
  self.assertTrue(session.has_stopped)
137
144
  self.assertEqual(result, 3)
138
145
  self.assertIsNone(foo.session)
146
+ self.assertEqual(foo.state, [0, 1, 2])
147
+ self.assertIs(foo.invocation.state, foo.state)
139
148
  self.assertEqual(foo.result, 3)
140
149
  self.assertEqual(
141
150
  foo.metadata, dict(note='foo', subtask_0=0, subtask_1=1, subtask_2=2)
@@ -1159,21 +1159,35 @@ class LanguageModel(component.Component):
1159
1159
  ) -> message_lib.Message:
1160
1160
  """Returns the first candidate."""
1161
1161
  prompt = message_lib.UserMessage.from_value(prompt)
1162
- with component.context(override_attrs=True, **kwargs):
1163
- sampling_options = self.sampling_options
1164
- if sampling_options.n != 1:
1165
- sampling_options = sampling_options.clone(override=dict(n=1))
1166
-
1167
- call_counter = self._call_counter
1168
- self._call_counter += 1
1169
- request_start = time.time()
1170
- result = self.sample(
1171
- [prompt], sampling_options=sampling_options, cache_seed=cache_seed
1172
- )[0]
1173
- elapse = time.time() - request_start
1174
- response = result.samples[0].response
1175
- self._debug(prompt, response, call_counter, result.usage, elapse)
1176
- return response
1162
+ start_time = time.time()
1163
+ error_tag = ''
1164
+ try:
1165
+ with component.context(override_attrs=True, **kwargs):
1166
+ sampling_options = self.sampling_options
1167
+ if sampling_options.n != 1:
1168
+ sampling_options = sampling_options.clone(override=dict(n=1))
1169
+
1170
+ call_counter = self._call_counter
1171
+ self._call_counter += 1
1172
+ request_start = time.time()
1173
+ result = self.sample(
1174
+ [prompt], sampling_options=sampling_options, cache_seed=cache_seed
1175
+ )[0]
1176
+ elapse = time.time() - request_start
1177
+ response = result.samples[0].response
1178
+ self._debug(prompt, response, call_counter, result.usage, elapse)
1179
+ return response
1180
+ except BaseException as e:
1181
+ error_tag = pg.ErrorInfo.from_exception(e).tag
1182
+ raise e
1183
+ finally:
1184
+ _METRICS.language_model_calls.increment(
1185
+ model=self.model_id, error=error_tag
1186
+ )
1187
+ _METRICS.language_model_call_duration_ms.record(
1188
+ int((time.time() - start_time) * 1000),
1189
+ model=self.model_id, error=error_tag,
1190
+ )
1177
1191
 
1178
1192
  def _debug(
1179
1193
  self,
@@ -1438,6 +1452,25 @@ class LanguageModel(component.Component):
1438
1452
  return None
1439
1453
 
1440
1454
 
1455
+ class _Metrics:
1456
+ """Metrics for Langfun."""
1457
+
1458
+ def __init__(self):
1459
+ self._metrics = pg.monitoring.metric_collection('/third_party/langfun')
1460
+ self.language_model_calls = self._metrics.get_counter(
1461
+ 'language_model_calls',
1462
+ 'Number of calls to the language model.',
1463
+ parameters={'model': str, 'error': str},
1464
+ )
1465
+ self.language_model_call_duration_ms = self._metrics.get_scalar(
1466
+ 'language_model_call_duration_ms',
1467
+ 'Duration of calls to the language model in milliseconds.',
1468
+ parameters={'model': str, 'error': str},
1469
+ )
1470
+
1471
+ _METRICS = _Metrics()
1472
+
1473
+
1441
1474
  class _ConcurrencyControl:
1442
1475
  """Controls the max concurrent LLM calls for a given model."""
1443
1476
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510060804
3
+ Version: 0.1.2.dev202510070805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors