Files
NeuroDock/examples/external_tools_example.py
T
Zacharias d016ad9a48
build / build (push) Has been cancelled
refactor(Core): decompose handleResponse and add ToolCallingRender system
- Extract handleResponse into focused helpers: processToolCall, findTool,
  reportToolNotFound, renderToolCalling, executeToolCall
- Introduce ToolCallingRender sealed interface (Suppress/Default/Custom)
  allowing tools to control how their invocations are rendered
- Add printToolCalling to PrintAdvanceMessageHandler contract
- Implement default tool calling rendering in PrintMessageHandler (blue text)
- Add WriteFileTool for file writing capabilities
- Fix "responce" → "response" typo across Java and Python files
- Improve PythonRunner docker error handling and output messages
- Update Gradle test configuration (maxHeapSize, test logging)

Signed-off-by: zacharias <alienfromdia@proton.me>
2026-06-15 14:55:09 +02:00

89 lines
3.4 KiB
Python

CONTAINER_ID = "c25df4d642bdeff0e0b4c4e72138c7b17db09cf174c7e5448538c6811ee10064"
import socket
import json
import builtins
HOST = "host.docker.internal"
PORT = 6050
def connect(data):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
data = data + "\n"
s.sendall(data.encode("utf-8"))
response = s.recv(4096)
return response.decode("utf-8")
def print_output(text):
data = {"function": "print_output", "container_id": CONTAINER_ID, "text": text}
connect(json.dumps(data))
def _neurodock_print(*args, **kwargs):
text = " ".join(str(a) for a in args)
print_output(text)
builtins.print = _neurodock_print
## Following is the generated
def read_file(file_path=None):
data = {"function":"read_file","arguments":[{"name": "file_path", "value": file_path}]}
return json.loads(connect(json.dumps(data)))
def add_memory(memory, identity):
data = {"function":"add_memory","arguments":[{"name": "memory", "value": memory}, {"name": "identity", "value": identity}]}
return json.loads(connect(json.dumps(data)))
def remove_memory(identity):
data = {"function":"remove_memory","arguments":[{"name": "identity", "value": identity}]}
return json.loads(connect(json.dumps(data)))
def get_memory(identity):
data = {"function":"get_memory","arguments":[{"name": "identity", "value": identity}]}
return json.loads(connect(json.dumps(data)))
def get_memories():
data = {"function":"get_memories"}
return json.loads(connect(json.dumps(data)))
def get_memory_identities():
data = {"function":"get_memory_identities"}
return json.loads(connect(json.dumps(data)))
def get_current_date():
data = {"function":"get_current_date"}
return json.loads(connect(json.dumps(data)))
def python_runner(code=None, name=None, libs=None):
data = {"function":"python_runner","arguments":[{"name": "code", "value": code}, {"name": "name", "value": name}, {"name": "libs", "value": libs}]}
return json.loads(connect(json.dumps(data)))
def get_anime_details(id, fields=None):
data = {"function":"get_anime_details","arguments":[{"name": "id", "value": id}, {"name": "fields", "value": fields}]}
return json.loads(connect(json.dumps(data)))
def get_anime_list(offset=None, query, fields=None):
data = {"function":"get_anime_list","arguments":[{"name": "offset", "value": offset}, {"name": "query", "value": query}, {"name": "fields", "value": fields}]}
return json.loads(connect(json.dumps(data)))
def get_manag_details(id, fields=None):
data = {"function":"get_manag_details","arguments":[{"name": "id", "value": id}, {"name": "fields", "value": fields}]}
return json.loads(connect(json.dumps(data)))
def get_manga_list(offset=None, query, fields=None):
data = {"function":"get_manga_list","arguments":[{"name": "offset", "value": offset}, {"name": "query", "value": query}, {"name": "fields", "value": fields}]}
return json.loads(connect(json.dumps(data)))
def findsong(title):
data = {"function":"findsong","arguments":[{"name": "title", "value": title}]}
return json.loads(connect(json.dumps(data)))
def get_lyrics(song_id):
data = {"function":"get_lyrics","arguments":[{"name": "song_id", "value": song_id}]}
return json.loads(connect(json.dumps(data)))
def get_wiki_page_text(title):
data = {"function":"get_wiki_page_text","arguments":[{"name": "title", "value": title}]}
return json.loads(connect(json.dumps(data)))