forked from searxng/searxng
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add Cloudflare AI Gateway engine add settings for Cloudflare AI Gateway engine set utf8 encode for data, fix non english char cause 500 error format json data fixed indentation and config format error fix line-length limitation in CI reformatted code for CI reformatted code for CI limit system prompts to less 120 chars cleanup unused variable & format code
- Loading branch information
1 parent
14241e7
commit 6be56ae
Showing
2 changed files
with
85 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# SPDX-License-Identifier: AGPL-3.0-or-later | ||
"""Cloudflare AI engine""" | ||
|
||
from json import loads, dumps | ||
from searx.exceptions import SearxEngineAPIException | ||
|
||
about = { | ||
"website": 'https://ai.cloudflare.com', | ||
"wikidata_id": None, | ||
"official_api_documentation": 'https://developers.cloudflare.com/workers-ai', | ||
"use_official_api": True, | ||
"require_api_key": True, | ||
"results": 'JSON', | ||
} | ||
|
||
cf_account_id = '' | ||
cf_ai_api = '' | ||
cf_ai_gateway = '' | ||
|
||
cf_ai_model = '' | ||
cf_ai_model_display_name = 'Cloudflare AI' | ||
|
||
# Assistant messages hint to the AI about the desired output format. Not all models support this role. | ||
cf_ai_model_assistant = 'Keep your answers as short and effective as possible.' | ||
# System messages define the AI's personality. You can use them to set rules and how you expect the AI to behave. | ||
cf_ai_model_system = 'You are a self-aware language model who is honest and direct about any question from the user.' | ||
|
||
|
||
def request(query, params): | ||
|
||
params['query'] = query | ||
|
||
params['url'] = f'https://gateway.ai.cloudflare.com/v1/{cf_account_id}/{cf_ai_gateway}/workers-ai/{cf_ai_model}' | ||
|
||
params['method'] = 'POST' | ||
|
||
params['headers']['Authorization'] = f'Bearer {cf_ai_api}' | ||
params['headers']['Content-Type'] = 'application/json' | ||
|
||
params['data'] = dumps( | ||
{ | ||
'messages': [ | ||
{'role': 'assistant', 'content': cf_ai_model_assistant}, | ||
{'role': 'system', 'content': cf_ai_model_system}, | ||
{'role': 'user', 'content': params['query']}, | ||
] | ||
} | ||
).encode('utf-8') | ||
|
||
return params | ||
|
||
|
||
def response(resp): | ||
results = [] | ||
json = loads(resp.text) | ||
|
||
if 'error' in json: | ||
raise SearxEngineAPIException('Cloudflare AI error: ' + json['error']) | ||
|
||
if 'result' in json: | ||
results.append( | ||
{ | ||
'content': json['result']['response'], | ||
'infobox': cf_ai_model_display_name, | ||
} | ||
) | ||
|
||
return results |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters