langfun 0.1.2.dev202505050805__tar.gz → 0.1.2.dev202505060804__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 (168) hide show
  1. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/agentic/action.py +84 -14
  3. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/agentic/action_test.py +4 -2
  4. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/__init__.py +1 -0
  5. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/gemini.py +1 -1
  6. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/openai.py +29 -0
  7. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun.egg-info/PKG-INFO +1 -1
  8. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/LICENSE +0 -0
  9. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/README.md +0 -0
  10. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/__init__.py +0 -0
  11. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/__init__.py +0 -0
  12. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/agentic/__init__.py +0 -0
  13. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/agentic/action_eval.py +0 -0
  14. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/agentic/action_eval_test.py +0 -0
  15. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/__init__.py +0 -0
  16. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/__init__.py +0 -0
  17. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/correction.py +0 -0
  18. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/correction_test.py +0 -0
  19. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/execution.py +0 -0
  20. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/execution_test.py +0 -0
  21. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/generation.py +0 -0
  22. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/generation_test.py +0 -0
  23. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/parsing.py +0 -0
  24. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/parsing_test.py +0 -0
  25. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/sandboxing.py +0 -0
  26. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/coding/python/sandboxing_test.py +0 -0
  27. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/component.py +0 -0
  28. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/component_test.py +0 -0
  29. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/concurrent.py +0 -0
  30. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/concurrent_test.py +0 -0
  31. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/console.py +0 -0
  32. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/console_test.py +0 -0
  33. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/__init__.py +0 -0
  34. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/__init__.py +0 -0
  35. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/anthropic.py +0 -0
  36. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/anthropic_test.py +0 -0
  37. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/gemini.py +0 -0
  38. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/gemini_test.py +0 -0
  39. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/openai.py +0 -0
  40. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/data/conversion/openai_test.py +0 -0
  41. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/__init__.py +0 -0
  42. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/base.py +0 -0
  43. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/base_test.py +0 -0
  44. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/matching.py +0 -0
  45. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/matching_test.py +0 -0
  46. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/patching.py +0 -0
  47. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/patching_test.py +0 -0
  48. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/scoring.py +0 -0
  49. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/scoring_test.py +0 -0
  50. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/__init__.py +0 -0
  51. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/checkpointing.py +0 -0
  52. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  53. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  54. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/evaluation.py +0 -0
  55. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/evaluation_test.py +0 -0
  56. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/example.py +0 -0
  57. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/example_test.py +0 -0
  58. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/experiment.py +0 -0
  59. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/experiment_test.py +0 -0
  60. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/metric_values.py +0 -0
  61. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/metric_values_test.py +0 -0
  62. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/metrics.py +0 -0
  63. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/metrics_test.py +0 -0
  64. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/progress.py +0 -0
  65. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/progress_test.py +0 -0
  66. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/progress_tracking.py +0 -0
  67. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  68. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/reporting.py +0 -0
  69. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/reporting_test.py +0 -0
  70. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/runners.py +0 -0
  71. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/eval/v2/runners_test.py +0 -0
  72. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/langfunc.py +0 -0
  73. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/langfunc_test.py +0 -0
  74. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/language_model.py +0 -0
  75. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/language_model_test.py +0 -0
  76. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/anthropic.py +0 -0
  77. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/anthropic_test.py +0 -0
  78. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/azure_openai.py +0 -0
  79. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/azure_openai_test.py +0 -0
  80. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/cache/__init__.py +0 -0
  81. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/cache/base.py +0 -0
  82. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/cache/in_memory.py +0 -0
  83. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/cache/in_memory_test.py +0 -0
  84. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/compositional.py +0 -0
  85. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/compositional_test.py +0 -0
  86. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/deepseek.py +0 -0
  87. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/deepseek_test.py +0 -0
  88. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/fake.py +0 -0
  89. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/fake_test.py +0 -0
  90. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/gemini_test.py +0 -0
  91. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/google_genai.py +0 -0
  92. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/google_genai_test.py +0 -0
  93. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/groq.py +0 -0
  94. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/groq_test.py +0 -0
  95. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/llama_cpp.py +0 -0
  96. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/llama_cpp_test.py +0 -0
  97. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/openai_compatible.py +0 -0
  98. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/openai_compatible_test.py +0 -0
  99. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/openai_test.py +0 -0
  100. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/rest.py +0 -0
  101. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/rest_test.py +0 -0
  102. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/vertexai.py +0 -0
  103. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/llms/vertexai_test.py +0 -0
  104. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/logging.py +0 -0
  105. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/logging_test.py +0 -0
  106. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/memories/__init__.py +0 -0
  107. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/memories/conversation_history.py +0 -0
  108. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/memories/conversation_history_test.py +0 -0
  109. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/memory.py +0 -0
  110. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/message.py +0 -0
  111. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/message_test.py +0 -0
  112. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/__init__.py +0 -0
  113. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/audio.py +0 -0
  114. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/audio_test.py +0 -0
  115. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/image.py +0 -0
  116. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/image_test.py +0 -0
  117. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/mime.py +0 -0
  118. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/mime_test.py +0 -0
  119. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/pdf.py +0 -0
  120. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/pdf_test.py +0 -0
  121. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/video.py +0 -0
  122. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modalities/video_test.py +0 -0
  123. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modality.py +0 -0
  124. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/modality_test.py +0 -0
  125. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/natural_language.py +0 -0
  126. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/natural_language_test.py +0 -0
  127. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/sampling.py +0 -0
  128. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/sampling_test.py +0 -0
  129. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/__init__.py +0 -0
  130. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/completion.py +0 -0
  131. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/completion_test.py +0 -0
  132. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/description.py +0 -0
  133. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/description_test.py +0 -0
  134. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/function_generation.py +0 -0
  135. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/function_generation_test.py +0 -0
  136. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/mapping.py +0 -0
  137. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/mapping_test.py +0 -0
  138. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/parsing.py +0 -0
  139. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/parsing_test.py +0 -0
  140. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/querying.py +0 -0
  141. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/querying_test.py +0 -0
  142. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/schema.py +0 -0
  143. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/schema_generation.py +0 -0
  144. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/schema_generation_test.py +0 -0
  145. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/schema_test.py +0 -0
  146. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/scoring.py +0 -0
  147. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/scoring_test.py +0 -0
  148. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/tokenization.py +0 -0
  149. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/structured/tokenization_test.py +0 -0
  150. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/subscription.py +0 -0
  151. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/subscription_test.py +0 -0
  152. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/template.py +0 -0
  153. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/template_test.py +0 -0
  154. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/__init__.py +0 -0
  155. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/completion.py +0 -0
  156. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/completion_test.py +0 -0
  157. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/conversation.py +0 -0
  158. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/conversation_test.py +0 -0
  159. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/demonstration.py +0 -0
  160. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/demonstration_test.py +0 -0
  161. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/selfplay.py +0 -0
  162. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun/core/templates/selfplay_test.py +0 -0
  163. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun.egg-info/SOURCES.txt +0 -0
  164. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun.egg-info/dependency_links.txt +0 -0
  165. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun.egg-info/requires.txt +0 -0
  166. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/langfun.egg-info/top_level.txt +0 -0
  167. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/setup.cfg +0 -0
  168. {langfun-0.1.2.dev202505050805 → langfun-0.1.2.dev202505060804}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202505050805
3
+ Version: 0.1.2.dev202505060804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -194,6 +194,11 @@ class Action(pg.Object):
194
194
  """Returns the metadata associated with the result from previous call."""
195
195
  return self._invocation.metadata if self._invocation else None
196
196
 
197
+ @property
198
+ def invocation(self) -> Optional['ActionInvocation']:
199
+ """Returns last invocation. None if the action is not executed."""
200
+ return self._invocation
201
+
197
202
  def __call__(
198
203
  self,
199
204
  session: Optional['Session'] = None,
@@ -825,6 +830,7 @@ class ActionInvocation(pg.Object, pg.views.html.HtmlTreeView.Extension):
825
830
  def _on_bound(self):
826
831
  super()._on_bound()
827
832
  self._tab_control = None
833
+ self.action._invocation = self # pylint: disable=protected-access
828
834
 
829
835
  def _on_parent_change(self, *args, **kwargs):
830
836
  super()._on_parent_change(*args, **kwargs)
@@ -1154,7 +1160,6 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1154
1160
  )
1155
1161
 
1156
1162
  invocation = ActionInvocation(pg.maybe_ref(action))
1157
- action._invocation = invocation # pylint: disable=protected-access
1158
1163
  parent_action = self._current_action
1159
1164
  parent_execution = self._current_execution
1160
1165
  parent_execution.append(invocation)
@@ -1412,38 +1417,103 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1412
1417
  level: lf.logging.LogLevel,
1413
1418
  message: str,
1414
1419
  keep: bool,
1420
+ *,
1421
+ for_action: Action | ActionInvocation | None = None,
1415
1422
  **kwargs
1416
1423
  ) -> None:
1417
- """Logs a message to the session."""
1418
- action_name = self._current_action.action.__class__.__name__
1424
+ """Logs a message to the session.
1425
+
1426
+ Args:
1427
+ level: The logging level.
1428
+ message: The message to log.
1429
+ keep: Whether to keep the log entry in the execution trace.
1430
+ for_action: The action to log the message for. If not provided, the
1431
+ current action will be used.
1432
+ **kwargs: Additional keyword arguments to pass to `lf.logging.log` as
1433
+ metadata to show.
1434
+ """
1419
1435
  execution = self._current_execution
1436
+ if for_action is None:
1437
+ for_action = self._current_action
1438
+ elif isinstance(for_action, Action):
1439
+ for_action = for_action.invocation
1440
+ assert for_action is not None
1441
+
1420
1442
  log_entry = lf.logging.log(
1421
1443
  level,
1422
- f'[{execution.id} ({action_name})]: {message}',
1444
+ (
1445
+ f'[{for_action.id} ({for_action.action.__class__.__name__})]: '
1446
+ f'{message}'
1447
+ ),
1423
1448
  **kwargs
1424
1449
  )
1425
1450
  if keep:
1426
1451
  execution.append(log_entry)
1427
1452
 
1428
- def debug(self, message: str, keep: bool = True, **kwargs):
1453
+ def debug(
1454
+ self,
1455
+ message: str,
1456
+ keep: bool = True,
1457
+ *,
1458
+ for_action: Action | ActionInvocation | None = None,
1459
+ **kwargs
1460
+ ) -> None:
1429
1461
  """Logs a debug message to the session."""
1430
- self._log('debug', message, keep=keep, **kwargs)
1462
+ self._log(
1463
+ 'debug', message, keep=keep, for_action=for_action, **kwargs
1464
+ )
1431
1465
 
1432
- def info(self, message: str, keep: bool = True, **kwargs):
1466
+ def info(
1467
+ self,
1468
+ message: str,
1469
+ keep: bool = True,
1470
+ *,
1471
+ for_action: Action | ActionInvocation | None = None,
1472
+ **kwargs
1473
+ ) -> None:
1433
1474
  """Logs an info message to the session."""
1434
- self._log('info', message, keep=keep, **kwargs)
1475
+ self._log(
1476
+ 'info', message, keep=keep, for_action=for_action, **kwargs
1477
+ )
1435
1478
 
1436
- def warning(self, message: str, keep: bool = True, **kwargs):
1479
+ def warning(
1480
+ self,
1481
+ message: str,
1482
+ keep: bool = True,
1483
+ *,
1484
+ for_action: Action | ActionInvocation | None = None,
1485
+ **kwargs
1486
+ ) -> None:
1437
1487
  """Logs a warning message to the session."""
1438
- self._log('warning', message, keep=keep, **kwargs)
1488
+ self._log(
1489
+ 'warning', message, keep=keep, for_action=for_action, **kwargs
1490
+ )
1439
1491
 
1440
- def error(self, message: str, keep: bool = True, **kwargs):
1492
+ def error(
1493
+ self,
1494
+ message: str,
1495
+ keep: bool = True,
1496
+ *,
1497
+ for_action: Action | ActionInvocation | None = None,
1498
+ **kwargs
1499
+ ):
1441
1500
  """Logs an error message to the session."""
1442
- self._log('error', message, keep=keep, **kwargs)
1501
+ self._log(
1502
+ 'error', message, keep=keep, for_action=for_action, **kwargs
1503
+ )
1443
1504
 
1444
- def fatal(self, message: str, **kwargs):
1505
+ def fatal(
1506
+ self,
1507
+ message: str,
1508
+ keep: bool = True,
1509
+ *,
1510
+ for_action: Action | ActionInvocation | None = None,
1511
+ **kwargs
1512
+ ):
1445
1513
  """Logs a fatal message to the session."""
1446
- self._log('fatal', message, keep=True, **kwargs)
1514
+ self._log(
1515
+ 'fatal', message, keep=keep, for_action=for_action, **kwargs
1516
+ )
1447
1517
 
1448
1518
  def as_message(self) -> lf.AIMessage:
1449
1519
  """Returns the session as a message."""
@@ -107,6 +107,7 @@ class SessionTest(unittest.TestCase):
107
107
  lm = fake.StaticResponse('lm response')
108
108
  foo = Foo(1)
109
109
  self.assertIsNone(foo.session)
110
+ self.assertIsNone(foo.invocation)
110
111
  self.assertIsNone(foo.result)
111
112
  self.assertIsNone(foo.metadata)
112
113
 
@@ -167,6 +168,7 @@ class SessionTest(unittest.TestCase):
167
168
 
168
169
  # Inspecting the top-level action (Foo)
169
170
  foo_invocation = root.execution[0]
171
+ self.assertIs(foo.invocation, foo_invocation)
170
172
  self.assertIs(foo_invocation.parent_action, root)
171
173
  self.assertEqual(foo_invocation.id, 'agent@1:/a1')
172
174
  self.assertEqual(foo_invocation.execution.id, 'agent@1:/a1')
@@ -414,8 +416,8 @@ class SessionTest(unittest.TestCase):
414
416
  def test_log(self):
415
417
  session = action_lib.Session()
416
418
  session.debug('hi', x=1, y=2)
417
- session.info('hi', x=1, y=2)
418
- session.warning('hi', x=1, y=2)
419
+ session.info('hi', x=1, y=2, for_action=session.root)
420
+ session.warning('hi', x=1, y=2, for_action=session.root.action)
419
421
  session.error('hi', x=1, y=2)
420
422
  session.fatal('hi', x=1, y=2)
421
423
 
@@ -87,6 +87,7 @@ VertexAIGeminiFlash1_5 = VertexAIGemini15Flash
87
87
  # OpenAI models.
88
88
  from langfun.core.llms.openai import OpenAI
89
89
 
90
+ from langfun.core.llms.openai import Gpt41
90
91
  from langfun.core.llms.openai import GptO3
91
92
  from langfun.core.llms.openai import GptO4Mini
92
93
  from langfun.core.llms.openai import Gpt45Preview_20250227
@@ -657,7 +657,7 @@ class Gemini(rest.REST):
657
657
  def result(self, json: dict[str, Any]) -> lf.LMSamplingResult:
658
658
  messages = [
659
659
  lf.Message.from_value(candidate['content'], format='gemini')
660
- for candidate in json['candidates']
660
+ for candidate in json.get('candidates', [])
661
661
  ]
662
662
  usage = json['usageMetadata']
663
663
  input_tokens = usage['promptTokenCount']
@@ -49,6 +49,30 @@ class OpenAIModelInfo(lf.ModelInfo):
49
49
  #
50
50
 
51
51
  SUPPORTED_MODELS = [
52
+ # GPT-4.1 models
53
+ OpenAIModelInfo(
54
+ model_id='gpt-4.1',
55
+ alias_for='gpt-4.1-2025-04-14',
56
+ in_service=True,
57
+ model_type='instruction-tuned',
58
+ description='GPT 4.1 model (latest stable).',
59
+ url='https://platform.openai.com/docs/models/gpt-4.1',
60
+ input_modalities=OpenAIModelInfo.INPUT_IMAGE_TYPES,
61
+ context_length=lf.ModelInfo.ContextLength(
62
+ max_input_tokens=1_047_576,
63
+ max_output_tokens=32_768,
64
+ ),
65
+ pricing=lf.ModelInfo.Pricing(
66
+ cost_per_1m_cached_input_tokens=0.50,
67
+ cost_per_1m_input_tokens=2.0,
68
+ cost_per_1m_output_tokens=8.0,
69
+ ),
70
+ # Tier 5 rate limits.
71
+ rate_limits=lf.ModelInfo.RateLimits(
72
+ max_requests_per_minute=10_000,
73
+ max_tokens_per_minute=30_000_000,
74
+ ),
75
+ ),
52
76
  # o3 models.
53
77
  OpenAIModelInfo(
54
78
  model_id='o3',
@@ -1045,6 +1069,11 @@ class OpenAI(openai_compatible.OpenAICompatible):
1045
1069
  return super()._request_args(options)
1046
1070
 
1047
1071
 
1072
+ class Gpt41(OpenAI):
1073
+ """GPT-4.1."""
1074
+ model = 'gpt-4.1'
1075
+
1076
+
1048
1077
  class GptO4Mini(OpenAI):
1049
1078
  """GPT O4 mini."""
1050
1079
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202505050805
3
+ Version: 0.1.2.dev202505060804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors