Added ability to use multiple tools

This commit is contained in:
2024-08-18 15:54:57 -05:00
parent a8bda7622e
commit 5096ff7929
+18 -13
View File
@@ -94,11 +94,12 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
response = get_chat_response(messages)
tool_calls = []
if use_anthropic:
for message in response.content:
if message.type == "tool_use":
tool_calls.append(message)
else:
messages.append({"role": "assistant", "content": response.content})
fullMessage = []
for message_part in response.content:
fullMessage.append(message_part)
if message_part.type == "tool_use":
tool_calls.append(message_part)
messages.append({"role": "assistant", "content": fullMessage})
else:
assistant_message = response.choices[0].message
if hasattr(assistant_message, 'function_call') and assistant_message.function_call is not None:
@@ -107,29 +108,33 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
toolUseCount = 0
while len(tool_calls) > 0 and toolUseCount < 50:
tool_use_results = []
while len(tool_calls) > 0:
tool_call = tool_calls.pop(0)
function_name = tool_call.name
tool_response = call_tool(tool_call)
tool_use_results.append({"type": "tool_result", "tool_use_id": tool_call.id, "content": json.dumps(tool_response)})
formatted_result = {}
if use_anthropic:
formatted_result = {"role": "user", "content":[{"type": "tool_result", "tool_use_id": tool_call.id, "content": json.dumps(tool_response)}]}
formatted_result = {"role": "user", "content":tool_use_results}
else:
formatted_result = {"role": "function", "name": function_name, "content": json.dumps(tool_response)}
formatted_result = {"role": "function", "name": function_name, "content": json.dumps(tool_use_results[0])}
messages.append(formatted_result)
response = get_chat_response(messages)
assistant_message = ""
if use_anthropic:
for message in response.content:
if message.type == "tool_use":
tool_calls.append(message)
else:
messages.append({"role": "assistant", "content": response.content})
fullMessage = []
for message_part in response.content:
fullMessage.append(message_part)
if message_part.type == "tool_use":
tool_calls.append(message_part)
messages.append({"role": "assistant", "content": fullMessage})
else:
assistant_message = response.choices[0].message
conversation_history[user_id].append({"role": "assistant", "content": assistant_message})