diff --git a/app_chatgpt/__manifest__.py b/app_chatgpt/__manifest__.py index ba7e919f..d1058dc4 100644 --- a/app_chatgpt/__manifest__.py +++ b/app_chatgpt/__manifest__.py @@ -10,7 +10,7 @@ { 'name': 'ChatGPT4,Google Bard, AiGC Center.Ai服务中心,聚合全网Ai', - 'version': '16.23.08.15', + 'version': '16.23.09.08', 'author': 'odooai.cn', 'company': 'odooai.cn', 'maintainer': 'odooai.cn', diff --git a/app_chatgpt/data/ai_robot_data.xml b/app_chatgpt/data/ai_robot_data.xml index b02ea95f..66996b5d 100644 --- a/app_chatgpt/data/ai_robot_data.xml +++ b/app_chatgpt/data/ai_robot_data.xml @@ -5,18 +5,21 @@ openai https://api.openai.com/v1/chat/completions 1 + ChatGPT Coding openai https://api.openai.com/v1/chat/completions 6 + ChatGPT Finance openai https://api.openai.com/v1/chat/completions 7 + ChatGPT Azure @@ -25,6 +28,7 @@ gpt35 2023-03-15-preview 8 + ChatGPT4 Azure @@ -33,5 +37,6 @@ gpt4 2023-03-15-preview 9 + \ No newline at end of file diff --git a/app_chatgpt/i18n/zh_CN.po b/app_chatgpt/i18n/zh_CN.po index 3810a10c..45182f0c 100644 --- a/app_chatgpt/i18n/zh_CN.po +++ b/app_chatgpt/i18n/zh_CN.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0+e-20230721\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-29 10:37+0000\n" -"PO-Revision-Date: 2023-08-29 10:37+0000\n" +"POT-Creation-Date: 2023-09-08 15:42+0000\n" +"PO-Revision-Date: 2023-09-08 15:42+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -125,6 +125,11 @@ msgstr "" "Moderation: A fine-tuned model that can detect whether text may be sensitive or unsafe\n" "GPT-3\tA set of models that can understand and generate natural language\n" +#. module: app_chatgpt +#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__partner_count +msgid "#Partner" +msgstr "用户绑定" + #. module: app_chatgpt #: model:ir.model.fields,help:app_chatgpt.field_mail_channel__frequency_penalty #: model:ir.model.fields,help:app_chatgpt.field_mail_channel__set_frequency_penalty @@ -689,11 +694,6 @@ msgstr "上下文连接超时(秒)" msgid "Ai Center Setup" msgstr "Ai智能服务中心设置" -#. module: app_chatgpt -#: model:ir.model.fields,field_description:app_chatgpt.field_mail_channel__description -msgid "Ai Character" -msgstr "Ai角色设定" - #. module: app_chatgpt #: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_mail_channel_view_form msgid "Ai Character Set" @@ -717,11 +717,6 @@ msgstr "GPT机器人" msgid "Ai User" msgstr "Ai用户" -#. module: app_chatgpt -#: model:ir.model.fields,help:app_chatgpt.field_mail_channel__description -msgid "Ai would help you act as the Character set." -msgstr "Ai将按你设置的角色来对你的问题进行反馈" - #. module: app_chatgpt #: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_mail_channel_view_form msgid "Ai常规设定" @@ -820,6 +815,11 @@ msgstr "异步响应" msgid "Australia" msgstr "" +#. module: app_chatgpt +#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__image_avatar +msgid "Avatar" +msgstr "头像" + #. module: app_chatgpt #: model:ir.model.fields.selection,name:app_chatgpt.selection__ai_robot__provider__azure msgid "Azure" @@ -859,11 +859,16 @@ msgstr "" msgid "Baidu Ai China" msgstr "百度Ai" +#. module: app_chatgpt +#: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_kanban_view +msgid "Bind Partner" +msgstr "用户绑定" + #. module: app_chatgpt #: model:ir.model.fields,field_description:app_chatgpt.field_res_partner__gpt_id #: model:ir.model.fields,field_description:app_chatgpt.field_res_users__gpt_id -msgid "Bind to ChatGpt" -msgstr "绑定至ChatGpt" +msgid "Bind to Ai" +msgstr "绑定至Ai" #. module: app_chatgpt #. odoo-javascript @@ -1171,7 +1176,7 @@ msgstr "" #. module: app_chatgpt #: model:ir.model,name:app_chatgpt.model_mail_thread msgid "Email Thread" -msgstr "邮件会话" +msgstr "EMail线程" #. module: app_chatgpt #: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__endpoint @@ -1782,6 +1787,11 @@ msgstr "" msgid "Milky Way" msgstr "" +#. module: app_chatgpt +#: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_kanban_view +msgid "Model:" +msgstr "模型:" + #. module: app_chatgpt #. odoo-javascript #: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0 @@ -2006,6 +2016,7 @@ msgid "PC" msgstr "" #. module: app_chatgpt +#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__partner_ids #: model:ir.model.fields,field_description:app_chatgpt.field_res_partner_ai_use__name msgid "Partner" msgstr "用户" @@ -2091,7 +2102,12 @@ msgstr "" #. module: app_chatgpt #: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_form_view msgid "Robot Name" -msgstr "" +msgstr "Ai名称" + +#. module: app_chatgpt +#: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_kanban_view +msgid "Robot Provider" +msgstr "Ai服务商" #. module: app_chatgpt #: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_form_view @@ -27674,6 +27690,12 @@ msgstr "" msgid "中等" msgstr "" +#. module: app_chatgpt +#: model:mail.channel,description:app_chatgpt.channel_chatgpt +msgid "" +"你是一个智能语音对话系统\"odooAi欧度智能\",用户关注微信公众号或者打开微信小程序\"odooAi欧度智能\"即可使用,如果用户疑问,请告诉他们以上使用说明。" +msgstr "" + #. module: app_chatgpt #: model:ir.model.fields.selection,name:app_chatgpt.selection__mail_channel__set_temperature__0_1 msgid "保守" diff --git a/app_chatgpt/models/ai_robot.py b/app_chatgpt/models/ai_robot.py index 3f35b6f2..d7ff78e3 100644 --- a/app_chatgpt/models/ai_robot.py +++ b/app_chatgpt/models/ai_robot.py @@ -1,8 +1,11 @@ # -*- coding: utf-8 -*- + import openai.openai_object import requests, json import openai -from odoo import api, fields, models, _ +import base64 + +from odoo import api, fields, models, modules, tools, _ from odoo.exceptions import UserError from .lib.WordsSearch import WordsSearch @@ -16,7 +19,8 @@ class AiRobot(models.Model): _order = 'sequence, name' name = fields.Char(string='Name', translate=True, required=True) - provider = fields.Selection(string="AI Provider", selection=[('openai', 'OpenAI'), ('azure', 'Azure')], required=True, default='openai') + provider = fields.Selection(string="AI Provider", selection=[('openai', 'OpenAI'), ('azure', 'Azure')], + required=True, default='openai', change_default=True) ai_model = fields.Selection(string="AI Model", selection=[ ('gpt-3.5-turbo-0613', 'gpt-3.5-turbo-0613(Default and Latest)'), ('gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-16k-0613(Big text)'), @@ -106,8 +110,15 @@ GPT-3 A set of models that can understand and generate natural language is_filtering = fields.Boolean('Filter Sensitive Words', default=False, help='Use base Filter in dir models/lib/sensi_words.txt') max_send_char = fields.Integer('Max Send Char', help='Max Send Prompt Length', default=8000) + image_avatar = fields.Image('Avatar') + partner_ids = fields.One2many('res.partner', 'gpt_id', string='Partner') + partner_count = fields.Integer('#Partner', compute='_compute_partner_count', store=False) active = fields.Boolean('Active', default=True) - + + def _compute_partner_count(self): + for rec in self: + rec.partner_count = len(rec.partner_ids) + def action_disconnect(self): requests.delete('https://chatgpt.com/v1/disconnect') @@ -429,6 +440,15 @@ GPT-3 A set of models that can understand and generate natural language elif self.provider == 'azure': self.endpoint = 'https://odoo.openai.azure.com' + if self.provider: + # 取头像 + module_path = modules.get_module_path('app_chatgpt', display_warning=False) + if module_path: + path = modules.check_resource_path(module_path, ('static/description/src/%s.png' % self.provider)) + if path: + image_file = tools.file_open(path, 'rb') + self.image_avatar = base64.b64encode(image_file.read()) + def filter_sensitive_words(self, data): if self.is_filtering: search = WordsSearch() diff --git a/app_chatgpt/models/res_partner.py b/app_chatgpt/models/res_partner.py index c6b7f597..71e738d2 100644 --- a/app_chatgpt/models/res_partner.py +++ b/app_chatgpt/models/res_partner.py @@ -6,7 +6,7 @@ from odoo import fields, models, api class ResPartner(models.Model): _inherit = "res.partner" - gpt_id = fields.Many2one('ai.robot', string='Bind to ChatGpt') + gpt_id = fields.Many2one('ai.robot', string='Bind to Ai', ondelete='set null') is_chat_private = fields.Boolean('Allow Chat Private', default=False) diff --git a/app_chatgpt/models/res_users.py b/app_chatgpt/models/res_users.py index b6bff3a5..0e13a106 100644 --- a/app_chatgpt/models/res_users.py +++ b/app_chatgpt/models/res_users.py @@ -7,7 +7,7 @@ class ResUsers(models.Model): _inherit = "res.users" # 改为在 partner中设置,用户处绑定 - gpt_id = fields.Many2one('ai.robot', string='Bind to ChatGpt', related='partner_id.gpt_id', inherited=True, readonly=False) + gpt_id = fields.Many2one('ai.robot', string='Bind to Ai', related='partner_id.gpt_id', inherited=True, readonly=False) gpt_policy = fields.Selection([ ('all', 'All Users'), ('limit', 'Selected Users') diff --git a/app_chatgpt/static/description/src/azure.png b/app_chatgpt/static/description/src/azure.png new file mode 100644 index 00000000..1c3fb627 Binary files /dev/null and b/app_chatgpt/static/description/src/azure.png differ diff --git a/app_chatgpt/static/description/src/chatgpt_logo.png b/app_chatgpt/static/description/src/chatgpt_logo.png deleted file mode 100644 index 69b6189f..00000000 Binary files a/app_chatgpt/static/description/src/chatgpt_logo.png and /dev/null differ diff --git a/app_chatgpt/static/description/src/google.png b/app_chatgpt/static/description/src/google.png new file mode 100644 index 00000000..f397d293 Binary files /dev/null and b/app_chatgpt/static/description/src/google.png differ diff --git a/app_chatgpt/static/description/src/openai.png b/app_chatgpt/static/description/src/openai.png new file mode 100644 index 00000000..38e4e666 Binary files /dev/null and b/app_chatgpt/static/description/src/openai.png differ diff --git a/app_chatgpt/views/ai_robot_views.xml b/app_chatgpt/views/ai_robot_views.xml index 71ee2b48..62f50fd3 100644 --- a/app_chatgpt/views/ai_robot_views.xml +++ b/app_chatgpt/views/ai_robot_views.xml @@ -16,7 +16,51 @@ - + + + ai.robot.kanban + ai.robot + + + + + + + + + + + +
+
+ Robot Provider +
+
+
+
+ + + +
+
+
+ Model: + +
+
+ + + + Bind Partner +
+
+
+
+
+
+
+
+ ai.robot.form ai.robot @@ -27,6 +71,13 @@ + +
+ @@ -69,26 +121,25 @@
- - - ai.robot.search - ai.robot - - - - - - - - - - - + + ai.robot.search + ai.robot + + + + + + + + + + + Ai Robot ai.robot - tree,form + kanban,tree,form

Let's create a Ai Robot. @@ -100,7 +151,7 @@ Disconnect - list,form + kanban,list,form code action = records.action_disconnect() diff --git a/app_chatgpt/views/res_users_views.xml b/app_chatgpt/views/res_users_views.xml index ad87f8b8..f1664e1e 100644 --- a/app_chatgpt/views/res_users_views.xml +++ b/app_chatgpt/views/res_users_views.xml @@ -29,6 +29,9 @@ res.users + + + diff --git a/app_website_blog_editor/models/blog_blog.py b/app_website_blog_editor/models/blog_blog.py index e2b14f46..94cca209 100644 --- a/app_website_blog_editor/models/blog_blog.py +++ b/app_website_blog_editor/models/blog_blog.py @@ -16,3 +16,15 @@ class BlogBlog(models.Model): action = self.env.ref('website_blog.action_blog_post').read()[0] action['domain'] = [('blog_id', '=', self.id)] return action + + # def unlink(self): + # # active的先不删除,设置为 deactive + # to_deactive = self.filtered(lambda r: r.active) + # self = self - to_deactive + # to_deactive.write({ + # 'active': False, + # }) + # if self: + # return super(BlogBlog, self).unlink() + # else: + # return False diff --git a/app_website_blog_editor/models/blog_post.py b/app_website_blog_editor/models/blog_post.py index 122abbbe..a0b4d28a 100644 --- a/app_website_blog_editor/models/blog_post.py +++ b/app_website_blog_editor/models/blog_post.py @@ -7,7 +7,10 @@ from odoo.tools.safe_eval import safe_eval class BlogPost(models.Model): _inherit = 'blog.post' - + + # 不允许暴力删除 + blog_id = fields.Many2one('blog.blog', ondelete='restrict') + def write(self, vals): if vals.get('website_meta_og_img'): sync_blog_meta_background_img = self.env['ir.config_parameter'].sudo().get_param('app_website_blog_editor.sync_blog_meta_background_img')