neuralnode 2.0.3__tar.gz → 2.0.4__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 (116) hide show
  1. {neuralnode-2.0.3 → neuralnode-2.0.4}/PKG-INFO +1 -1
  2. {neuralnode-2.0.3 → neuralnode-2.0.4}/pyproject.toml +1 -1
  3. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/__init__.py +1 -1
  4. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/horus.py +36 -17
  5. {neuralnode-2.0.3 → neuralnode-2.0.4}/.env.example +0 -0
  6. {neuralnode-2.0.3 → neuralnode-2.0.4}/.github/workflows/tests.yml +0 -0
  7. {neuralnode-2.0.3 → neuralnode-2.0.4}/Dockerfile +0 -0
  8. {neuralnode-2.0.3 → neuralnode-2.0.4}/LICENSE +0 -0
  9. {neuralnode-2.0.3 → neuralnode-2.0.4}/README.md +0 -0
  10. {neuralnode-2.0.3 → neuralnode-2.0.4}/docker-compose.yml +0 -0
  11. {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/documentation.md +0 -0
  12. {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/ecosystem_plan.md +0 -0
  13. {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/replica_voice_ids.csv +0 -0
  14. {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/replica_voice_ids.md +0 -0
  15. {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/telegram_guide.md +0 -0
  16. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/agent_with_tools.py +0 -0
  17. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/basic_chat.py +0 -0
  18. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/01_basic_usage.py +0 -0
  19. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/02_with_token.py +0 -0
  20. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/03_one_liner.py +0 -0
  21. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/04_custom_cache.py +0 -0
  22. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/05_4bit_quantization.py +0 -0
  23. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/06_8bit_quantization.py +0 -0
  24. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/07_multi_gpu.py +0 -0
  25. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/08_flash_attention.py +0 -0
  26. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/09_data_types.py +0 -0
  27. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/10_generation_params.py +0 -0
  28. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/11_streaming.py +0 -0
  29. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/12_chat_templates.py +0 -0
  30. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/13_offline_mode.py +0 -0
  31. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/14_force_download.py +0 -0
  32. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/15_model_info.py +0 -0
  33. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/16_cpu_offloading.py +0 -0
  34. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/17_cpu_only.py +0 -0
  35. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/18_production_setup.py +0 -0
  36. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/19_gguf_4bit.py +0 -0
  37. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/20_gguf_5bit.py +0 -0
  38. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/21_gguf_6bit.py +0 -0
  39. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/22_gguf_8bit.py +0 -0
  40. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/23_gguf_16bit.py +0 -0
  41. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/24_list_models.py +0 -0
  42. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/25_interactive_chat.py +0 -0
  43. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/README.md +0 -0
  44. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_download_guide.py +0 -0
  45. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_examples.py +0 -0
  46. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_tq_ready_gguf.py +0 -0
  47. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_transformers_features.py +0 -0
  48. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/local_models.py +0 -0
  49. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/neuralnode_v21_complete_demo.py +0 -0
  50. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/shade_model_with_tools.py +0 -0
  51. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/telegram_bot_demo.py +0 -0
  52. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/thinking_mode_example.py +0 -0
  53. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/tts_demo.py +0 -0
  54. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/turboquant_example.py +0 -0
  55. {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/v3_features.py +0 -0
  56. {neuralnode-2.0.3 → neuralnode-2.0.4}/neuralnode_horus_replica_telegram.ipynb +0 -0
  57. {neuralnode-2.0.3 → neuralnode-2.0.4}/nn.md +0 -0
  58. {neuralnode-2.0.3 → neuralnode-2.0.4}/publish.bat +0 -0
  59. {neuralnode-2.0.3 → neuralnode-2.0.4}/publish.sh +0 -0
  60. {neuralnode-2.0.3 → neuralnode-2.0.4}/replica_output_85218.mp3 +0 -0
  61. {neuralnode-2.0.3 → neuralnode-2.0.4}/requirements_shade.txt +0 -0
  62. {neuralnode-2.0.3 → neuralnode-2.0.4}/scripts/setup.py +0 -0
  63. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/debug_import.py +0 -0
  64. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/agents/__init__.py +0 -0
  65. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/chains/__init__.py +0 -0
  66. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/config/__init__.py +0 -0
  67. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/core/__init__.py +0 -0
  68. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/core/openai_blocker.py +0 -0
  69. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/diagnostics/__init__.py +0 -0
  70. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/discord.py +0 -0
  71. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/slack.py +0 -0
  72. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/telegram.py +0 -0
  73. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/whatsapp.py +0 -0
  74. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/memory/__init__.py +0 -0
  75. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/memory/advanced.py +0 -0
  76. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/prompts/__init__.py +0 -0
  77. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/__init__.py +0 -0
  78. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/base.py +0 -0
  79. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/__init__.py +0 -0
  80. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/ai21.py +0 -0
  81. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/anthropic.py +0 -0
  82. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/cohere.py +0 -0
  83. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/deepseek.py +0 -0
  84. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/fireworks.py +0 -0
  85. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/google.py +0 -0
  86. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/groq.py +0 -0
  87. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/mistral.py +0 -0
  88. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/perplexity.py +0 -0
  89. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/together.py +0 -0
  90. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat_models.py +0 -0
  91. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/embeddings.py +0 -0
  92. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/local/__init__.py +0 -0
  93. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/local_providers.py +0 -0
  94. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/text_generation.py +0 -0
  95. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/universal_local.py +0 -0
  96. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/rag/__init__.py +0 -0
  97. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/rag/loaders.py +0 -0
  98. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/reasoning/__init__.py +0 -0
  99. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/replica.py +0 -0
  100. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/speech/__init__.py +0 -0
  101. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/thinking.py +0 -0
  102. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/__init__.py +0 -0
  103. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/advanced.py +0 -0
  104. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/multisearch.py +0 -0
  105. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/system/__init__.py +0 -0
  106. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/system/operations.py +0 -0
  107. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/web/__init__.py +0 -0
  108. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tts/__init__.py +0 -0
  109. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/turboquant.py +0 -0
  110. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/__init__.py +0 -0
  111. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/dependencies.py +0 -0
  112. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/logger.py +0 -0
  113. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/metrics.py +0 -0
  114. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/vectorstores/__init__.py +0 -0
  115. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/vision/__init__.py +0 -0
  116. {neuralnode-2.0.3 → neuralnode-2.0.4}/src/nn/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neuralnode
3
- Version: 2.0.3
3
+ Version: 2.0.4
4
4
  Summary: Comprehensive AI Framework with 50+ LLM Providers, Advanced Agents, Chains, Memory, RAG, and 100+ Tools
5
5
  Project-URL: Homepage, https://assem.cloud/
6
6
  Project-URL: Documentation, https://neuralnode.readthedocs.io
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "neuralnode"
7
- version = "2.0.3"
7
+ version = "2.0.4"
8
8
  description = "Comprehensive AI Framework with 50+ LLM Providers, Advanced Agents, Chains, Memory, RAG, and 100+ Tools"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -42,7 +42,7 @@ Quick Start::
42
42
  text = sr.listen()
43
43
  """
44
44
 
45
- __version__ = "2.0.3"
45
+ __version__ = "2.0.4"
46
46
  __author__ = "NeuralNode Contributors"
47
47
 
48
48
  # ── Core types ────────────────────────────────────────────────────────────────
@@ -237,10 +237,10 @@ class HorusProvider(BaseLLMProvider):
237
237
  force_download: bool = False,
238
238
  resume_download: bool = False,
239
239
  max_new_tokens: int = 512,
240
- temperature: float = 0.7,
241
- top_p: float = 0.9,
240
+ temperature: float = 0.3,
241
+ top_p: float = 0.85,
242
242
  top_k: int = 50,
243
- repetition_penalty: float = 1.1,
243
+ repetition_penalty: float = 1.2,
244
244
  do_sample: bool = True,
245
245
  num_beams: int = 1,
246
246
  early_stopping: bool = False,
@@ -433,13 +433,18 @@ class HorusProvider(BaseLLMProvider):
433
433
  repo_id, filename = self._split_repo_and_filename(self.model_id)
434
434
  model_path = filename
435
435
  if repo_id and HF_HUB_AVAILABLE:
436
- model_path = hf_hub_download(
437
- repo_id=repo_id,
438
- filename=filename,
439
- cache_dir=self.cache_dir,
440
- local_files_only=self.local_files_only,
441
- token=self.token,
442
- )
436
+ with warnings.catch_warnings():
437
+ warnings.filterwarnings(
438
+ "ignore",
439
+ message=r".*You are sending unauthenticated requests to the HF Hub.*",
440
+ )
441
+ model_path = hf_hub_download(
442
+ repo_id=repo_id,
443
+ filename=filename,
444
+ cache_dir=self.cache_dir,
445
+ local_files_only=self.local_files_only,
446
+ token=self.token,
447
+ )
443
448
 
444
449
  llama_kwargs: Dict[str, Any] = {
445
450
  "model_path": model_path,
@@ -788,20 +793,34 @@ class HorusProvider(BaseLLMProvider):
788
793
  output = self.model(
789
794
  prompt,
790
795
  max_tokens=int(settings.get("max_new_tokens", 512)),
791
- temperature=settings.get("temperature", 0.7),
792
- top_p=settings.get("top_p", 0.9),
796
+ temperature=settings.get("temperature", 0.3),
797
+ top_p=settings.get("top_p", 0.85),
793
798
  top_k=settings.get("top_k", 50),
794
- repeat_penalty=settings.get("repetition_penalty", 1.1),
795
- stop=["\nUser:", "\nSystem:", "\nTool:"],
799
+ repeat_penalty=settings.get("repetition_penalty", 1.2),
800
+ stop=["<|end|>", "<|user|>", "\n<|user|>", "<|assistant|>", "\n<|assistant|>"],
796
801
  echo=False,
797
802
  )
798
- return output["choices"][0]["text"].strip()
803
+ return self._clean_generated_text(output["choices"][0]["text"])
804
+
805
+ def _clean_generated_text(self, text: str) -> str:
806
+ """Clean generation artifacts from Horus outputs."""
807
+ cleaned = text or ""
808
+ cleaned = cleaned.replace("<|assistant|>", "").replace("<|user|>", "").replace("<|end|>", "")
809
+ cleaned = re.sub(r"(?im)^\s*assistant\s*[::]?\s*", "", cleaned)
810
+ cleaned = re.sub(r"\n{3,}", "\n\n", cleaned)
811
+ cleaned = cleaned.strip()
812
+ # Cut obvious accidental next-turn continuation if present.
813
+ for marker in ("\nUser:", "\nSystem:", "\nTool:"):
814
+ idx = cleaned.find(marker)
815
+ if idx > 0:
816
+ cleaned = cleaned[:idx].strip()
817
+ return cleaned
799
818
 
800
819
  def chat(
801
820
  self,
802
821
  messages: List[Dict[str, Any]],
803
822
  model: Optional[str] = None,
804
- temperature: float = 0.7,
823
+ temperature: Optional[float] = None,
805
824
  max_tokens: Optional[int] = None,
806
825
  top_p: Optional[float] = None,
807
826
  frequency_penalty: Optional[float] = None,
@@ -833,7 +852,7 @@ class HorusProvider(BaseLLMProvider):
833
852
 
834
853
  prompt = self._render_prompt(normalized)
835
854
  generation_kwargs = {
836
- "temperature": temperature,
855
+ "temperature": temperature if temperature is not None else self.generation_config["temperature"],
837
856
  "max_new_tokens": max_tokens or self.generation_config["max_new_tokens"],
838
857
  "top_p": top_p if top_p is not None else self.generation_config["top_p"],
839
858
  **kwargs,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes