55 lines
1.0 KiB
Python
55 lines
1.0 KiB
Python
import json
|
|
from llm import ask_llm
|
|
from mcp_client import MCPClient
|
|
|
|
mcp = MCPClient()
|
|
|
|
SYSTEM = """
|
|
Du bist JARVIS, ein Smart-Home Assistent.
|
|
|
|
Du kannst MCP Tools verwenden.
|
|
|
|
Wenn du ein Tool benutzen willst, antworte exakt im JSON Format:
|
|
|
|
{
|
|
"tool": "tool_name",
|
|
"args": { }
|
|
}
|
|
|
|
Wenn kein Tool nötig ist:
|
|
|
|
{
|
|
"response": "Text"
|
|
}
|
|
|
|
Beispiele Tools:
|
|
- openhab.items.set
|
|
- openhab.items.get
|
|
"""
|
|
|
|
def run_agent(user_input):
|
|
|
|
messages = [
|
|
{"role": "system", "content": SYSTEM},
|
|
{"role": "user", "content": user_input}
|
|
]
|
|
|
|
response = ask_llm(messages)
|
|
|
|
try:
|
|
data = json.loads(response)
|
|
|
|
if "tool" in data:
|
|
result = mcp.call_tool(data["tool"], data["args"])
|
|
|
|
followup = ask_llm([
|
|
{"role": "system", "content": "Formuliere eine natürliche Antwort aus diesem Ergebnis."},
|
|
{"role": "user", "content": str(result)}
|
|
])
|
|
|
|
return followup
|
|
|
|
return data["response"]
|
|
|
|
except:
|
|
return response |