Spaces:
Running
Running
| import re | |
| from function_support import _function | |
| def extract_links(text): | |
| url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+' | |
| urls = re.findall(url_pattern, text) | |
| return urls | |
| def allocate(messages,model,functs): | |
| if "gemini" not in model: | |
| for msg in messages: | |
| if isinstance(msg["content"],list): | |
| msg["content"]=msg["content"][0]["text"] | |
| for msg in messages: | |
| if "tool" in msg["role"]: | |
| msg["role"]="user" | |
| msg["content"]=f"Tool {msg['name']} returned response: {msg['content']}. Now you must output the next tool Call or respond to user in natural language after the task has been completed. " | |
| del msg['name'] | |
| del msg["tool_call_id"] | |
| if "tool_calls" in msg: | |
| add="" | |
| for tools in msg["tool_calls"]: | |
| add=f""" | |
| ```json | |
| [ | |
| {{ | |
| "tool":"{tools["function"]["name"]}", | |
| "tool_input":{tools["function"]["arguments"]} | |
| }} | |
| ] | |
| ```""" | |
| msg["content"]=add | |
| del msg["tool_calls"] | |
| if functs !=None: | |
| function_call=_function(tools=functs) | |
| messages.insert(1,{"role": "system", "content": function_call}) | |