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}) | |