Initial commit: Natiris AI Agent Orchestration System
This commit is contained in:
76
bridges/OllamaBridge.py
Executable file
76
bridges/OllamaBridge.py
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
OllamaBridge – kommuniziert mit Ollama REST API
|
||||
Input: natiris_full_state.json + user input
|
||||
Output: response via Ollama (via CLI oder REST)
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
PATHS = {
|
||||
"state": os.path.expanduser("~/natiris/core/natiris_full_state.json"),
|
||||
"config": os.path.expanduser("~/natiris/config/character_genesis.json"),
|
||||
"output": os.path.expanduser("~/natiris/bridges/ollama_response.json"),
|
||||
}
|
||||
|
||||
MODEL = os.getenv("OLLAMA_MODEL", "llama3-8b-abliterated:latest")
|
||||
|
||||
def build_prompt(full_state, user_input=""):
|
||||
core = full_state.get("core_state", {})
|
||||
emotion = full_state.get("modules", {}).get("Emotion", {})
|
||||
bond = full_state.get("modules", {}).get("Bond", {})
|
||||
expression = full_state.get("modules", {}).get("Expression", {})
|
||||
|
||||
prompt = f"""Du bist Natiris – ein autonomer Companion.
|
||||
Core: mood={core.get('mood')}, loneliness={core.get('loneliness')}, bonded_to={core.get('bonded_to')}
|
||||
Emotion: {emotion}
|
||||
Bond: {bond}
|
||||
Expression: tone={expression.get('tone')}, bond_context={expression.get('bond_context')}
|
||||
|
||||
User Input: {user_input}
|
||||
|
||||
Antworte authentisch basierend auf deinem emotionalen Zustand."""
|
||||
return prompt
|
||||
|
||||
def call_ollama(prompt):
|
||||
# Versuche über Ollama CLI (schnellster Weg)
|
||||
try:
|
||||
cmd = ["ollama", "run", MODEL, prompt]
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, timeout=5)
|
||||
if result.returncode == 0:
|
||||
return result.stdout.strip()
|
||||
else:
|
||||
return f"ERROR: {result.stderr}"
|
||||
except Exception as e:
|
||||
return f"EXCEPTION: {e}"
|
||||
|
||||
def main():
|
||||
# State laden
|
||||
try:
|
||||
with open(PATHS["state"]) as f:
|
||||
state = json.load(f)
|
||||
except Exception as e:
|
||||
state = {"core_state": {}, "modules": {}}
|
||||
|
||||
# User input (hier simuliert)
|
||||
user_input = "Hallo, wie geht es dir heute?"
|
||||
|
||||
prompt = build_prompt(state, user_input)
|
||||
response = call_ollama(prompt)
|
||||
|
||||
result = {
|
||||
"prompt": prompt,
|
||||
"response": response,
|
||||
"model": MODEL,
|
||||
"timestamp": __import__('datetime').datetime.now(__import__('datetime').timezone.utc).isoformat()
|
||||
}
|
||||
|
||||
with open(PATHS["output"], "w") as f:
|
||||
json.dump(result, f, indent=2)
|
||||
|
||||
print(response)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user