Fixing tool calling failure issue
This commit is contained in:
parent
03221ca119
commit
1dba9e32f2
@ -27,7 +27,13 @@ def execute_tool(tool_call, TOOL_HANDLERS):
|
|||||||
def run_agent_loop(session, llm_client, TOOLS, TOOL_HANDLERS, max_iterations, on_tool_calls=None):
|
def run_agent_loop(session, llm_client, TOOLS, TOOL_HANDLERS, max_iterations, on_tool_calls=None):
|
||||||
for step in range(max_iterations):
|
for step in range(max_iterations):
|
||||||
print(f'[{_ts()}] Step {step + 1} — calling LLM...', flush=True)
|
print(f'[{_ts()}] Step {step + 1} — calling LLM...', flush=True)
|
||||||
response = llm_client.chat(session.messages, tools=TOOLS)
|
|
||||||
|
# Ambil konfigurasi disable_reasoning dari personality karakter
|
||||||
|
# Default ke False jika tidak didefinisikan
|
||||||
|
personality = getattr(session, 'personality', {})
|
||||||
|
disable_reasoning = personality.get('disable_reasoning', False)
|
||||||
|
|
||||||
|
response = llm_client.chat(session.messages, tools=TOOLS, disable_reasoning=disable_reasoning)
|
||||||
|
|
||||||
if response.tool_calls:
|
if response.tool_calls:
|
||||||
amsg = {
|
amsg = {
|
||||||
|
|||||||
@ -19,7 +19,7 @@ class LLMClient:
|
|||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
self.cancel_requested = False
|
self.cancel_requested = False
|
||||||
|
|
||||||
def chat(self, messages, tools=None, on_stream_chunk=None):
|
def chat(self, messages, tools=None, on_stream_chunk=None, disable_reasoning=False):
|
||||||
url = f"{self.base_url}/chat/completions"
|
url = f"{self.base_url}/chat/completions"
|
||||||
payload = {
|
payload = {
|
||||||
"model": self.model,
|
"model": self.model,
|
||||||
@ -30,9 +30,10 @@ class LLMClient:
|
|||||||
payload["tools"] = tools
|
payload["tools"] = tools
|
||||||
payload["tool_choice"] = "auto"
|
payload["tool_choice"] = "auto"
|
||||||
|
|
||||||
# Disable reasoning/thinking di level API bila didukung
|
# Hanya kirim parameter reasoning jika diminta eksplisit
|
||||||
# OpenRouter & beberapa provider support ini
|
# Beberapa model/provider justru error jika parameter ini ada tapi tidak didukung
|
||||||
payload["reasoning"] = {"enabled": False}
|
if disable_reasoning:
|
||||||
|
payload["reasoning"] = {"enabled": False}
|
||||||
|
|
||||||
data = json.dumps(payload).encode('utf-8')
|
data = json.dumps(payload).encode('utf-8')
|
||||||
req = urllib.request.Request(url, data=data, method='POST')
|
req = urllib.request.Request(url, data=data, method='POST')
|
||||||
@ -102,11 +103,11 @@ class LLMClient:
|
|||||||
|
|
||||||
# Stream content (text response)
|
# Stream content (text response)
|
||||||
if 'content' in delta:
|
if 'content' in delta:
|
||||||
chunk_text = delta['content']
|
chunk_text = delta['content'] or ""
|
||||||
full_content += chunk_text
|
full_content += chunk_text
|
||||||
|
|
||||||
# Callback untuk streaming ke UI
|
# Callback untuk streaming ke UI
|
||||||
if on_stream_chunk:
|
if on_stream_chunk and chunk_text:
|
||||||
on_stream_chunk(chunk_text)
|
on_stream_chunk(chunk_text)
|
||||||
|
|
||||||
# Build final response
|
# Build final response
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user