[IMP] web_editor, website: add database ID to OLG calls

This commit adds the database ID to the IAP calls made to generate text.
It permits to prevent abuses of OpenAI calls.

task-3740440

closes odoo/odoo#154615

Signed-off-by: Romain Derie (rde) <rde@odoo.com>
This commit is contained in:
Guillaume-gdi
2024-04-15 16:21:46 +00:00
parent 0f0a9845fc
commit 9f319cbc95
3 changed files with 15 additions and 0 deletions
+4
View File
@@ -802,15 +802,19 @@ class Web_Editor(http.Controller):
try:
IrConfigParameter = request.env['ir.config_parameter'].sudo()
olg_api_endpoint = IrConfigParameter.get_param('web_editor.olg_api_endpoint', DEFAULT_OLG_ENDPOINT)
database_id = IrConfigParameter.get_param('database.uuid')
response = iap_tools.iap_jsonrpc(olg_api_endpoint + "/api/olg/1/chat", params={
'prompt': prompt,
'conversation_history': conversation_history or [],
'version': release.version,
'database_id': database_id,
}, timeout=30)
if response['status'] == 'success':
return response['content']
elif response['status'] == 'error_prompt_too_long':
raise UserError(_("Sorry, your prompt is too long. Try to say it in fewer words."))
elif response['status'] == 'limit_call_reached':
raise UserError(_("You have reached the maximum number of requests for this service. Try again later."))
else:
raise UserError(_("Sorry, we could not generate a response. Please try again later."))
except AccessError:
+9
View File
@@ -3593,6 +3593,15 @@ msgid ""
"screen."
msgstr ""
#. module: web_editor
#. odoo-python
#: code:addons/web_editor/controllers/main.py:0
#, python-format
msgid ""
"You have reached the maximum number of requests for this service. Try again "
"later."
msgstr ""
#. module: web_editor
#. odoo-javascript
#: code:addons/web_editor/static/src/xml/snippets.xml:0
+2
View File
@@ -656,10 +656,12 @@ class Website(models.Model):
if translated_ratio > 0.8:
try:
database_id = request.env['ir.config_parameter'].sudo().get_param('database.uuid')
response = self._OLG_api_rpc('/api/olg/1/generate_placeholder', {
'placeholders': list(generated_content.keys()),
'lang': website.default_lang_id.name,
'industry': industry,
'database_id': database_id,
})
name_replace_parser = re.compile(r"XXXX", re.MULTILINE)
for key in generated_content: