mirror of
https://github.com/oobabooga/text-generation-webui.git
synced 2026-03-18 19:34:39 +01:00
32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from modules.web_search import perform_web_search, truncate_content_by_tokens
|
|
|
|
tool = {
|
|
"type": "function",
|
|
"function": {
|
|
"name": "web_search",
|
|
"description": "Search the web using DuckDuckGo and return page contents.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {"type": "string", "description": "The search query."},
|
|
"num_pages": {"type": "integer", "description": "Number of search result pages to fetch (default: 3)."},
|
|
"max_tokens": {"type": "integer", "description": "Maximum number of tokens per page result (default: 2048)."},
|
|
},
|
|
"required": ["query"]
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
def execute(arguments):
|
|
query = arguments.get("query", "")
|
|
num_pages = arguments.get("num_pages", 3)
|
|
max_tokens = arguments.get("max_tokens", 2048)
|
|
results = perform_web_search(query, num_pages=num_pages)
|
|
output = []
|
|
for r in results:
|
|
if r and r["content"].strip():
|
|
output.append({"title": r["title"], "url": r["url"], "content": truncate_content_by_tokens(r["content"], max_tokens=max_tokens)})
|
|
|
|
return output if output else [{"error": "No results found."}]
|