From 9f319cbc95f8f4cb76df6f2b82e4b43a74f4b753 Mon Sep 17 00:00:00 2001 From: Guillaume-gdi Date: Mon, 19 Feb 2024 15:11:18 +0100 Subject: [PATCH] [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) --- addons/web_editor/controllers/main.py | 4 ++++ addons/web_editor/i18n/web_editor.pot | 9 +++++++++ addons/website/models/website.py | 2 ++ 3 files changed, 15 insertions(+) diff --git a/addons/web_editor/controllers/main.py b/addons/web_editor/controllers/main.py index 411eb3f0482..4bfa1efd0f2 100644 --- a/addons/web_editor/controllers/main.py +++ b/addons/web_editor/controllers/main.py @@ -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: diff --git a/addons/web_editor/i18n/web_editor.pot b/addons/web_editor/i18n/web_editor.pot index bd342dbd46d..6fd07b23e3e 100644 --- a/addons/web_editor/i18n/web_editor.pot +++ b/addons/web_editor/i18n/web_editor.pot @@ -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 diff --git a/addons/website/models/website.py b/addons/website/models/website.py index e1ef23366dc..f679272602b 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -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: