SimplerLLM 0.3.3.0__tar.gz → 0.3.3.2__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 (221) hide show
  1. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/PKG-INFO +8 -3
  2. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/__init__.py +14 -7
  3. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/__init__.py +6 -0
  4. simplerllm-0.3.3.2/SimplerLLM/language/llm_validator/__init__.py +51 -0
  5. simplerllm-0.3.3.2/SimplerLLM/language/llm_validator/models.py +112 -0
  6. simplerllm-0.3.3.2/SimplerLLM/language/llm_validator/validator.py +475 -0
  7. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/__init__.py +21 -10
  8. simplerllm-0.3.3.2/SimplerLLM/voice/live_voice_chat/__init__.py +17 -0
  9. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/live_voice_chat/audio_player.py +17 -3
  10. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/live_voice_chat/audio_recorder.py +43 -9
  11. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM.egg-info/PKG-INFO +8 -3
  12. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM.egg-info/SOURCES.txt +4 -0
  13. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM.egg-info/requires.txt +8 -2
  14. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/setup.py +4 -3
  15. simplerllm-0.3.3.2/tests/test_arabic_validator.py +128 -0
  16. simplerllm-0.3.3.0/SimplerLLM/voice/live_voice_chat/__init__.py +0 -11
  17. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/LICENSE +0 -0
  18. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/README.md +0 -0
  19. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/__init__.py +0 -0
  20. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/__init__.py +0 -0
  21. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/base.py +0 -0
  22. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/providers/__init__.py +0 -0
  23. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/providers/google_image.py +0 -0
  24. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/providers/image_response_models.py +0 -0
  25. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/providers/openai_image.py +0 -0
  26. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/providers/stability_image.py +0 -0
  27. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/wrappers/__init__.py +0 -0
  28. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/wrappers/google_wrapper.py +0 -0
  29. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/wrappers/openai_wrapper.py +0 -0
  30. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/image/generation/wrappers/stability_wrapper.py +0 -0
  31. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/embeddings.py +0 -0
  32. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/flow/__init__.py +0 -0
  33. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/flow/flow.py +0 -0
  34. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/flow/models.py +0 -0
  35. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/flow/tool_registry.py +0 -0
  36. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/__init__.py +0 -0
  37. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/base.py +0 -0
  38. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/exceptions.py +0 -0
  39. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/input_guardrails/__init__.py +0 -0
  40. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/input_guardrails/pii_detection.py +0 -0
  41. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/input_guardrails/prompt_injection.py +0 -0
  42. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/input_guardrails/topic_filter.py +0 -0
  43. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/output_guardrails/__init__.py +0 -0
  44. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/output_guardrails/content_safety.py +0 -0
  45. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/output_guardrails/format_validator.py +0 -0
  46. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/output_guardrails/length_validator.py +0 -0
  47. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/output_guardrails/pii_detection.py +0 -0
  48. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/guardrails/wrapper.py +0 -0
  49. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/__init__.py +0 -0
  50. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/base.py +0 -0
  51. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/reliable.py +0 -0
  52. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/__init__.py +0 -0
  53. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/anthropic_wrapper.py +0 -0
  54. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/cohere_wrapper.py +0 -0
  55. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/deepseek_wrapper.py +0 -0
  56. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/gemini_wrapper.py +0 -0
  57. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/ollama_wrapper.py +0 -0
  58. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/openai_wrapper.py +0 -0
  59. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/openrouter_wrapper.py +0 -0
  60. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm/wrappers/perplexity_wrapper.py +0 -0
  61. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_addons.py +0 -0
  62. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_brainstorm/__init__.py +0 -0
  63. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_brainstorm/models.py +0 -0
  64. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_brainstorm/recursive_brainstorm.py +0 -0
  65. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/__init__.py +0 -0
  66. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/chunk_store.py +0 -0
  67. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/clusterer.py +0 -0
  68. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/flat_clusterer.py +0 -0
  69. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/models.py +0 -0
  70. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/persistence.py +0 -0
  71. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_clustering/tree_builder.py +0 -0
  72. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_feedback/__init__.py +0 -0
  73. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_feedback/feedback_loop.py +0 -0
  74. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_feedback/models.py +0 -0
  75. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_judge/__init__.py +0 -0
  76. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_judge/judge.py +0 -0
  77. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_judge/models.py +0 -0
  78. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_provider_router/__init__.py +0 -0
  79. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_provider_router/models.py +0 -0
  80. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_provider_router/provider_router.py +0 -0
  81. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_provider_router/query_classifier.py +0 -0
  82. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/__init__.py +0 -0
  83. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/anthropic_llm.py +0 -0
  84. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/cohere_llm.py +0 -0
  85. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/deepseek_llm.py +0 -0
  86. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/gemini_llm.py +0 -0
  87. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/llm_response_models.py +0 -0
  88. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/ollama_llm.py +0 -0
  89. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/openai_llm.py +0 -0
  90. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/openrouter_llm.py +0 -0
  91. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/perplexity_llm.py +0 -0
  92. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_providers/voyage_llm.py +0 -0
  93. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_retrieval/__init__.py +0 -0
  94. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_retrieval/models.py +0 -0
  95. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_retrieval/retriever.py +0 -0
  96. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_router/__init__.py +0 -0
  97. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_router/models.py +0 -0
  98. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/language/llm_router/router.py +0 -0
  99. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/__init__.py +0 -0
  100. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/hub/__init__.py +0 -0
  101. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/hub/agentic_prompts.py +0 -0
  102. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/hub/prompt_manager.py +0 -0
  103. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/messages_template.py +0 -0
  104. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/prompts/prompt_builder.py +0 -0
  105. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/__init__.py +0 -0
  106. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/apify_api.py +0 -0
  107. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/brainstorm.py +0 -0
  108. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/email_functions.py +0 -0
  109. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/file_functions.py +0 -0
  110. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/file_loader.py +0 -0
  111. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/generic_loader.py +0 -0
  112. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/image_helpers.py +0 -0
  113. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/json_helpers.py +0 -0
  114. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/pandas_func.py +0 -0
  115. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/pattern_helpers.py +0 -0
  116. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/python_func.py +0 -0
  117. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/rapid_api.py +0 -0
  118. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/serp.py +0 -0
  119. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/text_chunker.py +0 -0
  120. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/tools/youtube.py +0 -0
  121. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/utils/__init__.py +0 -0
  122. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/utils/custom_verbose.py +0 -0
  123. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/__init__.py +0 -0
  124. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/local_vector_db.py +0 -0
  125. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/qdrant_vector_db.py +0 -0
  126. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/simpler_vector.py +0 -0
  127. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/vector_db.py +0 -0
  128. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/vectors/vector_providers.py +0 -0
  129. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/dialogue_generator/__init__.py +0 -0
  130. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/dialogue_generator/audio_merger.py +0 -0
  131. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/dialogue_generator/dialogue_generator.py +0 -0
  132. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/dialogue_generator/models.py +0 -0
  133. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/live_voice_chat/live_voice_chat.py +0 -0
  134. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/live_voice_chat/models.py +0 -0
  135. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/__init__.py +0 -0
  136. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/audio_utils.py +0 -0
  137. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/base.py +0 -0
  138. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/models.py +0 -0
  139. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/providers/__init__.py +0 -0
  140. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/providers/elevenlabs_convai.py +0 -0
  141. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/providers/openai_realtime.py +0 -0
  142. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/providers/realtime_response_models.py +0 -0
  143. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/realtime_voice_chat.py +0 -0
  144. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/wrappers/__init__.py +0 -0
  145. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/wrappers/elevenlabs_wrapper.py +0 -0
  146. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/realtime_voice/wrappers/openai_wrapper.py +0 -0
  147. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/__init__.py +0 -0
  148. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/base.py +0 -0
  149. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/providers/__init__.py +0 -0
  150. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/providers/openai_stt.py +0 -0
  151. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/providers/stt_response_models.py +0 -0
  152. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/wrappers/__init__.py +0 -0
  153. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/stt/wrappers/openai_wrapper.py +0 -0
  154. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/__init__.py +0 -0
  155. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/base.py +0 -0
  156. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/providers/__init__.py +0 -0
  157. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/providers/elevenlabs_tts.py +0 -0
  158. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/providers/openai_tts.py +0 -0
  159. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/providers/tts_response_models.py +0 -0
  160. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/wrappers/__init__.py +0 -0
  161. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/wrappers/elevenlabs_wrapper.py +0 -0
  162. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/tts/wrappers/openai_wrapper.py +0 -0
  163. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_dubbing/__init__.py +0 -0
  164. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_dubbing/audio_sync.py +0 -0
  165. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_dubbing/base.py +0 -0
  166. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_dubbing/models.py +0 -0
  167. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_dubbing/video_processor.py +0 -0
  168. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/__init__.py +0 -0
  169. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/base.py +0 -0
  170. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/caption_generator.py +0 -0
  171. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/models.py +0 -0
  172. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/utils/__init__.py +0 -0
  173. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/utils/subtitle_formatter.py +0 -0
  174. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/video_transcription/utils/video_utils.py +0 -0
  175. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/voice_chat/__init__.py +0 -0
  176. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/voice_chat/conversation.py +0 -0
  177. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/voice_chat/models.py +0 -0
  178. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM/voice/voice_chat/voice_chat.py +0 -0
  179. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM.egg-info/dependency_links.txt +0 -0
  180. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/SimplerLLM.egg-info/top_level.txt +0 -0
  181. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/setup.cfg +0 -0
  182. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_agent.py +0 -0
  183. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_agent_full.py +0 -0
  184. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_anthropic_web_search.py +0 -0
  185. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_cohere.py +0 -0
  186. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_cohere_embeddings.py +0 -0
  187. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_comprehensive_llm.py +0 -0
  188. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_embeddings_comprehensive.py +0 -0
  189. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_flow_comprehensive.py +0 -0
  190. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_brainstorm.py +0 -0
  191. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_clustering_retrieval.py +0 -0
  192. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_feedback.py +0 -0
  193. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_judge.py +0 -0
  194. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_provider_router.py +0 -0
  195. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_llm_providers.py +0 -0
  196. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_nested_models.py +0 -0
  197. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_openrouter.py +0 -0
  198. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_openrouter_full_response.py +0 -0
  199. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pattern_extraction.py +0 -0
  200. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pattern_helpers.py +0 -0
  201. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_perplexity_pydantic.py +0 -0
  202. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_perplexity_web_search.py +0 -0
  203. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_production_vector_db.py +0 -0
  204. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pydantic_edge_cases.py +0 -0
  205. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pydantic_edge_cases_llm.py +0 -0
  206. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pydantic_structures.py +0 -0
  207. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_pydantic_vision.py +0 -0
  208. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_qdrant_comprehensive.py +0 -0
  209. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_qdrant_connection.py +0 -0
  210. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_qdrant_integration_live.py +0 -0
  211. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_real_llm_generation.py +0 -0
  212. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_reliable_fix.py +0 -0
  213. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_reliable_vision.py +0 -0
  214. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_router_simple.py +0 -0
  215. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_router_youtube_titles.py +0 -0
  216. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_unified_vector_interface.py +0 -0
  217. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_vision_anthropic.py +0 -0
  218. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_vision_openai.py +0 -0
  219. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_vision_quick.py +0 -0
  220. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_voyage_embeddings.py +0 -0
  221. {simplerllm-0.3.3.0 → simplerllm-0.3.3.2}/tests/test_web_search_pydantic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimplerLLM
3
- Version: 0.3.3.0
3
+ Version: 0.3.3.2
4
4
  Summary: An easy-to-use Library for interacting with language models.
5
5
  Home-page: https://github.com/hassancs91/SimplerLLM
6
6
  Author: Hasan Aboul Hasan
@@ -45,14 +45,19 @@ Requires-Dist: qdrant-client==1.14.3
45
45
  Requires-Dist: voyageai==0.3.3
46
46
  Requires-Dist: pydub>=0.25.1
47
47
  Requires-Dist: elevenlabs>=2.22.0
48
- Requires-Dist: sounddevice>=0.4.6
49
- Requires-Dist: pynput>=1.7.6
50
48
  Requires-Dist: moviepy>=1.0.3
51
49
  Requires-Dist: yt-dlp>=2023.3.4
52
50
  Provides-Extra: voice
53
51
  Requires-Dist: pygame>=2.5.0; extra == "voice"
52
+ Requires-Dist: sounddevice>=0.4.6; extra == "voice"
53
+ Requires-Dist: pynput>=1.7.6; extra == "voice"
54
+ Provides-Extra: live-voice
55
+ Requires-Dist: sounddevice>=0.4.6; extra == "live-voice"
56
+ Requires-Dist: pynput>=1.7.6; extra == "live-voice"
54
57
  Provides-Extra: all
55
58
  Requires-Dist: pygame>=2.5.0; extra == "all"
59
+ Requires-Dist: sounddevice>=0.4.6; extra == "all"
60
+ Requires-Dist: pynput>=1.7.6; extra == "all"
56
61
  Dynamic: author
57
62
  Dynamic: author-email
58
63
  Dynamic: classifier
@@ -82,10 +82,8 @@ from .voice import (
82
82
  VoiceTurnResult,
83
83
  VoiceChatSession,
84
84
  ConversationManager,
85
- LiveVoiceChat,
86
85
  LiveVoiceChatConfig,
87
- AudioRecorder,
88
- AudioPlayer,
86
+ _LIVE_VOICE_AVAILABLE,
89
87
  DialogueGenerator,
90
88
  Dialogue,
91
89
  DialogueLine,
@@ -115,6 +113,14 @@ from .voice import (
115
113
  RealtimeVoiceChatConfig,
116
114
  )
117
115
 
116
+ # LiveVoiceChat requires PortAudio - import conditionally
117
+ if _LIVE_VOICE_AVAILABLE:
118
+ from .voice import LiveVoiceChat, AudioRecorder, AudioPlayer
119
+ else:
120
+ LiveVoiceChat = None
121
+ AudioRecorder = None
122
+ AudioPlayer = None
123
+
118
124
  # Image module exports
119
125
  from .image import (
120
126
  ImageGenerator,
@@ -208,11 +214,8 @@ __all__ = [
208
214
  'VoiceTurnResult',
209
215
  'VoiceChatSession',
210
216
  'ConversationManager',
211
- # Voice module - LiveVoiceChat
212
- 'LiveVoiceChat',
217
+ # Voice module - LiveVoiceChat (config always available, others require PortAudio)
213
218
  'LiveVoiceChatConfig',
214
- 'AudioRecorder',
215
- 'AudioPlayer',
216
219
  # Voice module - Dialogue
217
220
  'DialogueGenerator',
218
221
  'Dialogue',
@@ -253,3 +256,7 @@ __all__ = [
253
256
  'GoogleImageGenerator',
254
257
  'ImageGenerationResponse',
255
258
  ]
259
+
260
+ # Conditionally add LiveVoiceChat exports if PortAudio is available
261
+ if _LIVE_VOICE_AVAILABLE:
262
+ __all__.extend(['LiveVoiceChat', 'AudioRecorder', 'AudioPlayer'])
@@ -3,6 +3,7 @@ from .llm.reliable import ReliableLLM
3
3
  from .llm.wrappers import OpenAILLM, GeminiLLM, AnthropicLLM, OllamaLLM, DeepSeekLLM
4
4
  from .flow import MiniAgent, StepResult, FlowResult
5
5
  from .llm_judge import LLMJudge, JudgeMode, JudgeResult, ProviderResponse, ProviderEvaluation, EvaluationReport
6
+ from .llm_validator import LLMValidator, ValidationResult, ValidatorScore, AggregationMethod
6
7
  from .llm_feedback import LLMFeedbackLoop, FeedbackResult, IterationResult, Critique
7
8
  from .llm_provider_router import LLMProviderRouter, ProviderConfig, RoutingResult, QueryClassification
8
9
  from .llm_clustering import (
@@ -71,6 +72,11 @@ __all__ = [
71
72
  'ProviderResponse',
72
73
  'ProviderEvaluation',
73
74
  'EvaluationReport',
75
+ # LLM Validator
76
+ 'LLMValidator',
77
+ 'ValidationResult',
78
+ 'ValidatorScore',
79
+ 'AggregationMethod',
74
80
  'LLMFeedbackLoop',
75
81
  'FeedbackResult',
76
82
  'IterationResult',
@@ -0,0 +1,51 @@
1
+ """
2
+ LLM Validator - Multi-provider validation system for AI-generated content.
3
+
4
+ This module provides tools for validating AI-generated content using multiple
5
+ LLM providers, with configurable aggregation methods and consensus detection.
6
+
7
+ Main Classes:
8
+ - LLMValidator: Validates content using multiple LLM providers
9
+ - AggregationMethod: Enum for score aggregation methods
10
+ - ValidationResult: Complete validation result with scores and metadata
11
+ - ValidatorScore: Individual validator's score and explanation
12
+
13
+ Example:
14
+ ```python
15
+ from SimplerLLM.language import LLM, LLMProvider
16
+ from SimplerLLM.language.llm_validator import LLMValidator
17
+
18
+ # Create validators
19
+ validators = [
20
+ LLM.create(LLMProvider.OPENAI, model_name="gpt-4o"),
21
+ LLM.create(LLMProvider.ANTHROPIC, model_name="claude-3-5-sonnet-20241022"),
22
+ ]
23
+
24
+ # Initialize validator
25
+ validator = LLMValidator(validators=validators)
26
+
27
+ # Validate content
28
+ result = validator.validate(
29
+ content="Paris is the capital of France.",
30
+ validation_prompt="Check if the facts are accurate.",
31
+ original_question="What is the capital of France?",
32
+ )
33
+ print(f"Score: {result.overall_score}")
34
+ print(f"Valid: {result.is_valid}")
35
+ print(f"Consensus: {result.consensus}")
36
+ ```
37
+ """
38
+
39
+ from .validator import LLMValidator
40
+ from .models import (
41
+ AggregationMethod,
42
+ ValidationResult,
43
+ ValidatorScore,
44
+ )
45
+
46
+ __all__ = [
47
+ "LLMValidator",
48
+ "AggregationMethod",
49
+ "ValidationResult",
50
+ "ValidatorScore",
51
+ ]
@@ -0,0 +1,112 @@
1
+ """
2
+ Pydantic models for the LLM Validator system.
3
+
4
+ This module defines the data structures used for multi-provider validation
5
+ of AI-generated content, including scoring, confidence, and aggregation.
6
+ """
7
+
8
+ from typing import Dict, List, Optional, Any
9
+ from pydantic import BaseModel, Field
10
+ from datetime import datetime
11
+ from enum import Enum
12
+
13
+
14
+ class AggregationMethod(str, Enum):
15
+ """Method for aggregating scores from multiple validators."""
16
+ AVERAGE = "average" # Simple mean of all scores
17
+ WEIGHTED = "weighted" # Weighted average (provider weights)
18
+ MEDIAN = "median" # Median score
19
+ CONSENSUS = "consensus" # Majority agreement threshold
20
+
21
+
22
+ class ValidatorScoreOutput(BaseModel):
23
+ """Internal model for structured validator output from LLM."""
24
+ score: float = Field(
25
+ description="Validation score from 0.0 to 1.0 (0 = completely invalid, 1 = perfectly valid)",
26
+ ge=0.0,
27
+ le=1.0
28
+ )
29
+ confidence: float = Field(
30
+ description="How confident you are in this score from 0.0 to 1.0",
31
+ ge=0.0,
32
+ le=1.0
33
+ )
34
+ explanation: str = Field(
35
+ description="Detailed explanation of why you gave this score"
36
+ )
37
+
38
+
39
+ class ValidatorScore(BaseModel):
40
+ """Individual validator's score for the content."""
41
+ provider_name: str = Field(description="Name of the LLM provider (e.g., 'OPENAI', 'ANTHROPIC')")
42
+ model_name: str = Field(description="Specific model used (e.g., 'gpt-4o', 'claude-3-5-sonnet')")
43
+ score: float = Field(
44
+ description="Validation score from 0.0 to 1.0",
45
+ ge=0.0,
46
+ le=1.0
47
+ )
48
+ confidence: float = Field(
49
+ description="How confident the validator is in its score (0.0 to 1.0)",
50
+ ge=0.0,
51
+ le=1.0
52
+ )
53
+ explanation: str = Field(description="Explanation for the score")
54
+ is_valid: bool = Field(description="Whether the content passes validation (score >= threshold)")
55
+ execution_time: float = Field(description="Time taken to validate in seconds")
56
+ error: Optional[str] = Field(default=None, description="Error message if validation failed")
57
+
58
+ class Config:
59
+ json_schema_extra = {
60
+ "example": {
61
+ "provider_name": "OPENAI",
62
+ "model_name": "gpt-4o",
63
+ "score": 0.85,
64
+ "confidence": 0.92,
65
+ "explanation": "The content is factually accurate and well-structured.",
66
+ "is_valid": True,
67
+ "execution_time": 1.5,
68
+ "error": None
69
+ }
70
+ }
71
+
72
+
73
+ class ValidationResult(BaseModel):
74
+ """Complete result from LLM Validator."""
75
+ overall_score: float = Field(
76
+ description="Aggregated validation score (0.0 to 1.0)",
77
+ ge=0.0,
78
+ le=1.0
79
+ )
80
+ overall_confidence: float = Field(
81
+ description="Aggregated confidence score (0.0 to 1.0)",
82
+ ge=0.0,
83
+ le=1.0
84
+ )
85
+ is_valid: bool = Field(description="Overall pass/fail based on threshold")
86
+ validators: List[ValidatorScore] = Field(description="Individual validator scores")
87
+ consensus: bool = Field(description="Whether validators agreed on the result")
88
+ consensus_details: str = Field(description="Explanation of validator agreement")
89
+ aggregation_method: AggregationMethod = Field(description="Method used for aggregation")
90
+ content_validated: str = Field(description="The content that was validated")
91
+ validation_prompt: str = Field(description="The validation instructions used")
92
+ original_question: Optional[str] = Field(default=None, description="The original question if provided")
93
+ total_execution_time: float = Field(description="Total time for all validators in seconds")
94
+ timestamp: datetime = Field(default_factory=datetime.now, description="When validation completed")
95
+
96
+ class Config:
97
+ json_schema_extra = {
98
+ "example": {
99
+ "overall_score": 0.85,
100
+ "overall_confidence": 0.90,
101
+ "is_valid": True,
102
+ "validators": [],
103
+ "consensus": True,
104
+ "consensus_details": "All validators scored within 0.15 of each other",
105
+ "aggregation_method": "average",
106
+ "content_validated": "Paris is the capital of France.",
107
+ "validation_prompt": "Check if the facts are accurate.",
108
+ "original_question": "What is the capital of France?",
109
+ "total_execution_time": 3.2,
110
+ "timestamp": "2025-01-15T10:30:00"
111
+ }
112
+ }