【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> <field name="value">300</field>
</record> </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> </data>
</odoo> </odoo>

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 16.0+e-20230320\n" "Project-Id-Version: Odoo Server 16.0+e-20230320\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 07:58+0000\n" "POT-Creation-Date: 2023-03-30 10:30+0000\n"
"PO-Revision-Date: 2023-03-29 07:58+0000\n" "PO-Revision-Date: 2023-03-30 10:30+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -476,6 +476,11 @@ msgstr ""
msgid "Africa" msgid "Africa"
msgstr "" 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 #. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_users__gpt_policy__all #: model:ir.model.fields.selection,name:app_chatgpt.selection__res_users__gpt_policy__all
msgid "All Users" msgid "All Users"
@@ -530,6 +535,11 @@ msgstr ""
msgid "Asia" msgid "Asia"
msgstr "" 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 #. module: app_chatgpt
#. odoo-javascript #. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0 #: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -648,7 +658,6 @@ msgstr ""
#. module: app_chatgpt #. 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.app_chatgpt_res_users_form
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "ChatGPT" msgid "ChatGPT"
msgstr "" msgstr ""
@@ -808,7 +817,7 @@ msgstr ""
#. module: app_chatgpt #. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_channel #: model:ir.model,name:app_chatgpt.model_mail_channel
msgid "Discussion Channel" msgid "Discussion Channel"
msgstr "讨论频道" msgstr ""
#. module: app_chatgpt #. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__display_name #: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__display_name
@@ -1345,7 +1354,7 @@ msgstr ""
#. module: app_chatgpt #. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_message #: model:ir.model,name:app_chatgpt.model_mail_message
msgid "Message" msgid "Message"
msgstr "消息" msgstr ""
#. module: app_chatgpt #. module: app_chatgpt
#. odoo-javascript #. odoo-javascript
@@ -1463,6 +1472,13 @@ msgstr ""
msgid "Name" msgid "Name"
msgstr "" 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 #. module: app_chatgpt
#. odoo-javascript #. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0 #: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1771,6 +1787,16 @@ msgstr ""
msgid "Symbols" msgid "Symbols"
msgstr "" 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 #. module: app_chatgpt
#. odoo-javascript #. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0 #: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -27134,6 +27160,11 @@ msgstr ""
msgid "上下文连接超时 秒数" msgid "上下文连接超时 秒数"
msgstr "" msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "同步配置"
msgstr ""
#. module: app_chatgpt #. module: app_chatgpt
#: model:ir.model.fields,help:app_chatgpt.field_res_config_settings__openapi_context_timeout #: model:ir.model.fields,help:app_chatgpt.field_res_config_settings__openapi_context_timeout
msgid "多少秒以内的聊天信息作为上下文继续" 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 openapi_context_timeout = int(self.env['ir.config_parameter'].sudo().get_param('app_chatgpt.openapi_context_timeout')) or 600
except: except:
openapi_context_timeout = 600 openapi_context_timeout = 600
sync_config = self.env['ir.config_parameter'].sudo().get_param('app_chatgpt.openai_sync_config')
openai.api_key = api_key openai.api_key = api_key
partner_name = '' partner_name = ''
# print(msg_vals) # print(msg_vals)
@@ -116,7 +116,10 @@ class Channel(models.Model):
# if ai_model not in ['gpt-3.5-turbo', 'gpt-3.5-turbo-0301']: # 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) prompt = self.get_openai_context(channel.id, to_partner_id.id, prompt, openapi_context_timeout)
print(prompt) print(prompt)
self.with_delay().get_ai(ai, prompt, partner_name, channel, user_id, message) 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 = ai.get_ai(prompt, partner_name)
# res = res.replace('\n', '<br/>') # res = res.replace('\n', '<br/>')
# print('res:',res) # print('res:',res)
@@ -136,7 +139,10 @@ class Channel(models.Model):
_logger.info(f'频道群聊:author_id:{author_id},partner_chatgpt.id:{to_partner_id.id}') _logger.info(f'频道群聊:author_id:{author_id},partner_chatgpt.id:{to_partner_id.id}')
try: try:
prompt = self.get_openai_context(chatgpt_channel_id.id, to_partner_id.id, prompt, openapi_context_timeout) prompt = self.get_openai_context(chatgpt_channel_id.id, to_partner_id.id, prompt, openapi_context_timeout)
self.with_delay().get_ai(ai, prompt, 'odoo', chatgpt_channel_id, user_id, message) 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 = ai.get_ai(prompt, 'odoo')
# res = res.replace('\n', '<br/>') # res = res.replace('\n', '<br/>')
# chatgpt_channel_id.with_user(user_id).message_post(body=res, message_type='comment', subtype_xmlid='mail.mt_comment', parent_id=message.id) # chatgpt_channel_id.with_user(user_id).message_post(body=res, message_type='comment', subtype_xmlid='mail.mt_comment', parent_id=message.id)

View File

@@ -7,3 +7,7 @@ class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings" _inherit = "res.config.settings"
openapi_context_timeout = fields.Integer(string="上下文连接超时", help="多少秒以内的聊天信息作为上下文继续", config_parameter="app_chatgpt.openapi_context_timeout") 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="inherit_id" ref="base_setup.res_config_settings_view_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[@name='integration']" position="after"> <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 row o_settings_container" id="chatgpt_integraion">
<div class="col-xs-12 col-md-10 o_setting_box"> <div class="col-xs-12 col-md-10 o_setting_box">
<div class="o_setting_right_pane border-start-0"> <div class="o_setting_right_pane border-start-0">
@@ -15,6 +15,10 @@
<label class="col-lg-2" string="上下文连接超时" for="openapi_context_timeout"/> <label class="col-lg-2" string="上下文连接超时" for="openapi_context_timeout"/>
<field name="openapi_context_timeout" title="上下文连接超时 秒数" style="width: 10% !important;"/> <field name="openapi_context_timeout" title="上下文连接超时 秒数" style="width: 10% !important;"/>
</div> </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> </div>
</div> </div>