【app_chatgpt】增加配置可以同步也可以异步处理对话

This commit is contained in:
Chill
2023-03-30 18:32:37 +08:00
parent 54a8f32bd2
commit d9e2488745
5 changed files with 59 additions and 9 deletions

View File

@@ -7,5 +7,10 @@
<field name="value">300</field>
</record>
<record id="openai_sync_config" model="ir.config_parameter">
<field name="key">app_chatgpt.openai_sync_config</field>
<field name="value">sync</field>
</record>
</data>
</odoo>

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0+e-20230320\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 07:58+0000\n"
"PO-Revision-Date: 2023-03-29 07:58+0000\n"
"POT-Creation-Date: 2023-03-30 10:30+0000\n"
"PO-Revision-Date: 2023-03-30 10:30+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -476,6 +476,11 @@ msgstr ""
msgid "Africa"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Ai Center"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_users__gpt_policy__all
msgid "All Users"
@@ -530,6 +535,11 @@ msgstr ""
msgid "Asia"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_config_settings__openai_sync_config__async
msgid "Asynchronous"
msgstr "异步响应"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -648,7 +658,6 @@ msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.app_chatgpt_res_users_form
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "ChatGPT"
msgstr ""
@@ -808,7 +817,7 @@ msgstr ""
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_channel
msgid "Discussion Channel"
msgstr "讨论频道"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__display_name
@@ -1345,7 +1354,7 @@ msgstr ""
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_message
msgid "Message"
msgstr "消息"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
@@ -1463,6 +1472,13 @@ msgstr ""
msgid "Name"
msgstr ""
#. module: app_chatgpt
#. odoo-python
#: code:addons/app_chatgpt/models/ai_robot.py:0
#, python-format
msgid "No robot provider found"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1771,6 +1787,16 @@ msgstr ""
msgid "Symbols"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_config_settings__openai_sync_config
msgid "Sync Config"
msgstr "同步配置"
#. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_config_settings__openai_sync_config__sync
msgid "Synchronous"
msgstr "同步响应"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -27134,6 +27160,11 @@ msgstr ""
msgid "上下文连接超时 秒数"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "同步配置"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,help:app_chatgpt.field_res_config_settings__openapi_context_timeout
msgid "多少秒以内的聊天信息作为上下文继续"

View File

@@ -102,7 +102,7 @@ class Channel(models.Model):
openapi_context_timeout = int(self.env['ir.config_parameter'].sudo().get_param('app_chatgpt.openapi_context_timeout')) or 600
except:
openapi_context_timeout = 600
sync_config = self.env['ir.config_parameter'].sudo().get_param('app_chatgpt.openai_sync_config')
openai.api_key = api_key
partner_name = ''
# print(msg_vals)
@@ -116,6 +116,9 @@ class Channel(models.Model):
# if ai_model not in ['gpt-3.5-turbo', 'gpt-3.5-turbo-0301']:
prompt = self.get_openai_context(channel.id, to_partner_id.id, prompt, openapi_context_timeout)
print(prompt)
if sync_config == 'sync':
self.get_ai(ai, prompt, partner_name, channel, user_id, message)
else:
self.with_delay().get_ai(ai, prompt, partner_name, channel, user_id, message)
# res = ai.get_ai(prompt, partner_name)
# res = res.replace('\n', '<br/>')
@@ -136,6 +139,9 @@ class Channel(models.Model):
_logger.info(f'频道群聊:author_id:{author_id},partner_chatgpt.id:{to_partner_id.id}')
try:
prompt = self.get_openai_context(chatgpt_channel_id.id, to_partner_id.id, prompt, openapi_context_timeout)
if sync_config == 'sync':
self.get_ai(ai, prompt, 'odoo', chatgpt_channel_id, user_id, message)
else:
self.with_delay().get_ai(ai, prompt, 'odoo', chatgpt_channel_id, user_id, message)
# res = ai.get_ai(prompt, 'odoo')
# res = res.replace('\n', '<br/>')

View File

@@ -7,3 +7,7 @@ class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
openapi_context_timeout = fields.Integer(string="上下文连接超时", help="多少秒以内的聊天信息作为上下文继续", config_parameter="app_chatgpt.openapi_context_timeout")
openai_sync_config = fields.Selection([
('sync', 'Synchronous'),
('async', 'Asynchronous')
], string='Sync Config', default='sync', config_parameter="app_chatgpt.openai_sync_config")

View File

@@ -6,7 +6,7 @@
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='integration']" position="after">
<h2>ChatGPT</h2>
<h2>Ai Center</h2>
<div class="col-xs-12 row o_settings_container" id="chatgpt_integraion">
<div class="col-xs-12 col-md-10 o_setting_box">
<div class="o_setting_right_pane border-start-0">
@@ -15,6 +15,10 @@
<label class="col-lg-2" string="上下文连接超时" for="openapi_context_timeout"/>
<field name="openapi_context_timeout" title="上下文连接超时 秒数" style="width: 10% !important;"/>
</div>
<div class="row mt0">
<label class="col-lg-2" string="同步配置" for="openai_sync_config"/>
<field name="openai_sync_config" title="同步配置" style="width: 10% !important;"/>
</div>
</div>
</div>
</div>