ai-microcore 4.0.0.dev12__tar.gz → 4.0.0.dev13__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 (43) hide show
  1. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/PKG-INFO +2 -1
  2. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/__init__.py +1 -1
  3. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/configuration.py +11 -1
  4. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/interactive_setup.py +6 -5
  5. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/pyproject.toml +2 -1
  6. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/LICENSE +0 -0
  7. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/README.md +0 -0
  8. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/_env.py +0 -0
  9. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/_llm_functions.py +0 -0
  10. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/_prepare_llm_args.py +0 -0
  11. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/ai_func/__init__.py +0 -0
  12. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/ai_func/ai-func.json.j2 +0 -0
  13. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/ai_func/ai-func.pythonic.j2 +0 -0
  14. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/ai_modules.py +0 -0
  15. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/embedding_db/__init__.py +0 -0
  16. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/embedding_db/chromadb.py +0 -0
  17. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/file_storage.py +0 -0
  18. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/json_parsing.py +0 -0
  19. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/__init__.py +0 -0
  20. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/_openai_llm_v0.py +0 -0
  21. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/_openai_llm_v1.py +0 -0
  22. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/anthropic.py +0 -0
  23. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/google_genai.py +0 -0
  24. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/google_vertex_ai.py +0 -0
  25. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/local_llm.py +0 -0
  26. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/local_transformers.py +0 -0
  27. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/openai_llm.py +0 -0
  28. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/llm/shared.py +0 -0
  29. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/logging.py +0 -0
  30. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/mcp.py +0 -0
  31. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/message_types.py +0 -0
  32. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/metrics.py +0 -0
  33. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/python.py +0 -0
  34. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/templating/__init__.py +0 -0
  35. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/templating/jinja2.py +0 -0
  36. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/text2speech/elevenlabs.py +0 -0
  37. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/tokenizing.py +0 -0
  38. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/types.py +0 -0
  39. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/ui.py +0 -0
  40. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/utils.py +0 -0
  41. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/wrappers/__init__.py +0 -0
  42. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/wrappers/llm_response_wrapper.py +0 -0
  43. {ai_microcore-4.0.0.dev12 → ai_microcore-4.0.0.dev13}/microcore/wrappers/prompt_wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ai-microcore
3
- Version: 4.0.0.dev12
3
+ Version: 4.0.0.dev13
4
4
  Summary: # Minimalistic Foundation for AI Applications
5
5
  Keywords: llm,large language models,ai,similarity search,ai search,gpt,openai,framework,adapter
6
6
  Author-email: Vitalii Stepanenko <mail@vitalii.in>
@@ -24,6 +24,7 @@ Requires-Dist: PyYAML~=6.0
24
24
  Requires-Dist: chardet~=5.2.0
25
25
  Requires-Dist: tiktoken>=0.7.0,<1.0
26
26
  Requires-Dist: mcp~=1.9.1
27
+ Requires-Dist: docstring_parser~=0.16.0
27
28
  Project-URL: Source Code, https://github.com/Nayjest/ai-microcore
28
29
 
29
30
  <p align="right">
@@ -184,4 +184,4 @@ __all__ = [
184
184
  # "wrappers",
185
185
  ]
186
186
 
187
- __version__ = "4.0.0-dev12"
187
+ __version__ = "4.0.0-dev13"
@@ -410,7 +410,17 @@ class Config(LLMConfig):
410
410
 
411
411
  MCP_SERVERS: list = from_env(dtype=list)
412
412
 
413
+ INTERACTIVE_SETUP: bool = field(default=False)
414
+
413
415
  def __post_init__(self):
414
- super().__post_init__()
416
+ try:
417
+ super().__post_init__()
418
+ except LLMConfigError as e:
419
+ if self.INTERACTIVE_SETUP and not os.path.isfile(self.DOT_ENV_FILE):
420
+ from .interactive_setup import interactive_setup
421
+ config = interactive_setup(self.DOT_ENV_FILE)
422
+ self.__dict__.update(config.__dict__)
423
+ else:
424
+ raise e
415
425
  if self.TEXT_TO_SPEECH_PATH is None:
416
426
  self.TEXT_TO_SPEECH_PATH = Path(self.STORAGE_PATH) / "voicing"
@@ -1,4 +1,4 @@
1
- from .configuration import EmbeddingDbType, ApiType
1
+ from .configuration import EmbeddingDbType, ApiType, Config
2
2
  from .ui import ask_choose, ask_non_empty, ask_yn, error, yellow
3
3
  from ._env import configure
4
4
  from ._llm_functions import llm
@@ -9,7 +9,7 @@ def interactive_setup(
9
9
  file_path: str,
10
10
  defaults: dict = None,
11
11
  extras: dict | list = None,
12
- ):
12
+ ) -> Config | None:
13
13
  """
14
14
  Interactive setup for LLM API configuration.
15
15
  Prompts user for configuration details such as API type, key, model name,
@@ -50,7 +50,7 @@ def interactive_setup(
50
50
  if field not in raw_config:
51
51
  raw_config[field] = ask_non_empty(f"{title}: ")
52
52
  try:
53
- configure(
53
+ config = configure(
54
54
  **{
55
55
  **dict(
56
56
  USE_DOT_ENV=False,
@@ -66,8 +66,8 @@ def interactive_setup(
66
66
  except Exception as e: # pylint: disable=W0718
67
67
  error(f"Error testing LLM API: {e}")
68
68
  if ask_yn("Restart configuring?"):
69
- interactive_setup(file_path, defaults, extras)
70
- return
69
+ return interactive_setup(file_path, defaults, extras)
70
+ return None
71
71
 
72
72
  config_body = ''.join(f"{k}={v}\n" for k, v in raw_config.items())
73
73
  print(f"Configuration:\n{yellow(config_body)}")
@@ -75,3 +75,4 @@ def interactive_setup(
75
75
  print(f"Saved to {file_link(file_path)}")
76
76
  with open(file_path, "w", encoding="utf-8") as f:
77
77
  f.write(config_body)
78
+ return config
@@ -26,7 +26,8 @@ dependencies = [
26
26
  "PyYAML~=6.0",
27
27
  "chardet~=5.2.0",
28
28
  "tiktoken>=0.7.0,<1.0",
29
- "mcp~=1.9.1"
29
+ "mcp~=1.9.1",
30
+ "docstring_parser~=0.16.0",
30
31
  ]
31
32
  requires-python = ">=3.10"
32
33