fix: handle native tool_calls from MiniMax API instead of parsing JSON from content
This commit is contained in:
@@ -171,7 +171,52 @@ class ConversationalAgent:
|
|||||||
if "choices" in result and len(result["choices"]) > 0:
|
if "choices" in result and len(result["choices"]) > 0:
|
||||||
choice = result["choices"][0]
|
choice = result["choices"][0]
|
||||||
if "message" in choice:
|
if "message" in choice:
|
||||||
thinking = choice["message"].get("reasoning_content")
|
message = choice["message"]
|
||||||
|
thinking = message.get("reasoning_content")
|
||||||
|
|
||||||
|
# Check for native function calls (tool_calls)
|
||||||
|
tool_calls = message.get("tool_calls", [])
|
||||||
|
if tool_calls:
|
||||||
|
for tool_call in tool_calls:
|
||||||
|
func = tool_call.get("function", {})
|
||||||
|
if func.get("name") == "search_tokens":
|
||||||
|
args = json.loads(func.get("arguments", "{}"))
|
||||||
|
chain = args.get("chain", "bsc")
|
||||||
|
limit = args.get("limit", 10)
|
||||||
|
|
||||||
|
# Execute the tool
|
||||||
|
from ..ave.client import AveCloudClient
|
||||||
|
from ...core.config import get_settings
|
||||||
|
settings = get_settings()
|
||||||
|
ave_client = AveCloudClient(
|
||||||
|
api_key=settings.AVE_API_KEY,
|
||||||
|
plan=settings.AVE_API_PLAN
|
||||||
|
)
|
||||||
|
import asyncio
|
||||||
|
tokens = asyncio.run(ave_client.get_tokens(chain=chain, limit=limit))
|
||||||
|
|
||||||
|
if tokens:
|
||||||
|
# Format tokens for response
|
||||||
|
token_list = ""
|
||||||
|
for t in tokens[:limit]:
|
||||||
|
addr = t.get("token", "")
|
||||||
|
symbol = t.get("symbol", "")
|
||||||
|
name = t.get("name", "")
|
||||||
|
price_change = t.get("token_price_change_24h", "N/A")
|
||||||
|
token_list += f"- **{symbol}** ({name}): `{addr}` - 24h change: {price_change}%\n"
|
||||||
|
|
||||||
|
response_text = f"Here are the trending tokens on {chain.upper()}:\n\n{token_list}\nWould you like me to set up a strategy for any of these?"
|
||||||
|
else:
|
||||||
|
response_text = f"I couldn't find any trending tokens on {chain.upper()}. Try again later."
|
||||||
|
|
||||||
|
# Return the tool result directly
|
||||||
|
return {
|
||||||
|
"response": response_text,
|
||||||
|
"thinking": thinking,
|
||||||
|
"strategy_updated": False,
|
||||||
|
"strategy_needs_confirmation": False,
|
||||||
|
"success": True
|
||||||
|
}
|
||||||
|
|
||||||
# Get the main response content
|
# Get the main response content
|
||||||
content = result.get("choices", [{}])[0].get("message", {}).get("content", "")
|
content = result.get("choices", [{}])[0].get("message", {}).get("content", "")
|
||||||
|
|||||||
Reference in New Issue
Block a user