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.
- {neuralnode-2.0.3 → neuralnode-2.0.4}/PKG-INFO +1 -1
- {neuralnode-2.0.3 → neuralnode-2.0.4}/pyproject.toml +1 -1
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/__init__.py +1 -1
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/horus.py +36 -17
- {neuralnode-2.0.3 → neuralnode-2.0.4}/.env.example +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/.github/workflows/tests.yml +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/Dockerfile +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/LICENSE +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/README.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docker-compose.yml +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/documentation.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/ecosystem_plan.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/replica_voice_ids.csv +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/replica_voice_ids.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/docs/telegram_guide.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/agent_with_tools.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/basic_chat.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/01_basic_usage.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/02_with_token.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/03_one_liner.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/04_custom_cache.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/05_4bit_quantization.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/06_8bit_quantization.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/07_multi_gpu.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/08_flash_attention.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/09_data_types.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/10_generation_params.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/11_streaming.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/12_chat_templates.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/13_offline_mode.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/14_force_download.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/15_model_info.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/16_cpu_offloading.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/17_cpu_only.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/18_production_setup.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/19_gguf_4bit.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/20_gguf_5bit.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/21_gguf_6bit.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/22_gguf_8bit.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/23_gguf_16bit.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/24_list_models.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/25_interactive_chat.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_codes_camples/README.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_download_guide.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_examples.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_tq_ready_gguf.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/horus_transformers_features.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/local_models.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/neuralnode_v21_complete_demo.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/shade_model_with_tools.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/telegram_bot_demo.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/thinking_mode_example.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/tts_demo.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/turboquant_example.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/examples/v3_features.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/neuralnode_horus_replica_telegram.ipynb +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/nn.md +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/publish.bat +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/publish.sh +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/replica_output_85218.mp3 +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/requirements_shade.txt +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/scripts/setup.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/debug_import.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/agents/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/chains/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/config/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/core/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/core/openai_blocker.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/diagnostics/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/discord.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/slack.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/telegram.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/integrations/whatsapp.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/memory/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/memory/advanced.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/prompts/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/base.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/ai21.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/anthropic.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/cohere.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/deepseek.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/fireworks.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/google.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/groq.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/mistral.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/perplexity.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat/together.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/chat_models.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/embeddings.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/local/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/local_providers.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/text_generation.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/providers/universal_local.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/rag/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/rag/loaders.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/reasoning/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/replica.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/speech/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/thinking.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/advanced.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/multisearch.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/system/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/system/operations.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tools/web/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/tts/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/turboquant.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/dependencies.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/logger.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/utils/metrics.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/vectorstores/__init__.py +0 -0
- {neuralnode-2.0.3 → neuralnode-2.0.4}/src/neuralnode/vision/__init__.py +0 -0
- {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
|
+
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.
|
|
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"
|
|
@@ -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.
|
|
241
|
-
top_p: float = 0.
|
|
240
|
+
temperature: float = 0.3,
|
|
241
|
+
top_p: float = 0.85,
|
|
242
242
|
top_k: int = 50,
|
|
243
|
-
repetition_penalty: float = 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
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
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.
|
|
792
|
-
top_p=settings.get("top_p", 0.
|
|
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.
|
|
795
|
-
stop=["
|
|
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"]
|
|
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 =
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|