diff --git a/app_deepseek/__init__.py b/app_deepseek/__init__.py new file mode 100644 index 00000000..d6948c82 --- /dev/null +++ b/app_deepseek/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +# from . import controllers +from . import models diff --git a/app_deepseek/__manifest__.py b/app_deepseek/__manifest__.py new file mode 100644 index 00000000..00e1b536 --- /dev/null +++ b/app_deepseek/__manifest__.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# Created on 2023-09-15 +# author: 欧度智能,https://www.odooai.cn +# email: 300883@qq.com +# resource of odooai +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Deepseek Ai for odoo ai center, 深度求索Ai支持-对话模型', + 'version': '18.0.25.02.07', + 'author': 'odooai.cn', + 'company': 'odooai.cn', + 'maintainer': 'odooai.cn', + 'category': 'Website/Website', + 'website': 'https://www.odooai.cn', + 'live_test_url': 'https://demo.odooapp.cn', + 'license': 'LGPL-3', + 'sequence': 10, + 'license': 'LGPL-3', + 'price': 0.00, + 'currency': 'EUR', + 'images': ['static/description/banner.png'], + 'summary': ''' + Deepseek AI for Odoo AI Center. Ai Aigc Center including Deepseek, Azure Chatgpt Ai, OpenAi Chatgpt Ai. + Ai服务中心的DeepSeek支持,包括V3和R1等,本版本只支持开放对话模型。 + Integration All Ai robot Api, like Azure OpenAI Chatgpt Service. + Also support(need extra pay) Ali Ai, Baidu Ai, Kimi Ai. + Easy Chat channel with several Ai Robots and train. + ''', + 'description': ''' + Chat with Deepseek ai with odoo. + Allows the application to leverage the capabilities of the GPT language model to generate human-like responses, + providing a more natural and intuitive user experience. + odoo Deepseek ai connector. + 1. Multi ChatGpt openAI robot Connector. Chat and train. + 2. Multi Ai support including Google Bard Ai, Azure Ai, Chatgpt 4, Chatgpt 3.5 Turbo, Chatgpt 3 Davinci, Chatgpt 2 Code Optimized, 'Dall-E Image. + 3. Bind ChatGpt Api to user. So we can chat to robot user or use ChatGpt Channel for Group Chat. + 4. White and black List for ChatGpt. + 5. Setup Demo Chat time for every new user. + 6. Easy Start and Stop ChatGpt. + 7. Evaluation the ai robot to make better response. This training. + 8. Add api support Connect the Microsoft Azure OpenAI Service. + 9. Can set Synchronous or Asynchronous mode for Ai response. + 10.Filter Sensitive Words Setup. + 11. Multi-language Support. Multi-Company Support. + 12. Support Odoo 18,17,16,15,14,13,12, Enterprise and Community and odoo.sh Edition. + 13. Full Open Source. + ''', + 'depends': [ + 'app_chatgpt', + ], + 'data': [ + 'data/ai_robot_data.xml', + 'data/user_partner_data.xml', + 'data/mail_channel_data.xml', + 'views/ai_robot_views.xml', + ], + 'assets': { + }, + 'installable': True, + 'application': True, + 'auto_install': False, +} diff --git a/app_deepseek/controllers/__init__.py b/app_deepseek/controllers/__init__.py new file mode 100644 index 00000000..65a8c120 --- /dev/null +++ b/app_deepseek/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import main diff --git a/app_deepseek/controllers/main.py b/app_deepseek/controllers/main.py new file mode 100644 index 00000000..217c4d8b --- /dev/null +++ b/app_deepseek/controllers/main.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +from odoo import http + + +class ChatgptController(http.Controller): + @http.route(['/chatgpt_form'], type='http', auth="public", csrf=False, + website=True) + def question_submit(self): + return http.request.render('app_chatgpt.connector') diff --git a/app_deepseek/data/ai_robot_data.xml b/app_deepseek/data/ai_robot_data.xml new file mode 100644 index 00000000..6d125d30 --- /dev/null +++ b/app_deepseek/data/ai_robot_data.xml @@ -0,0 +1,13 @@ + + + + DeepSeek Ai + deepseek + deepseek-chat + deepseek-chat + + https://api.deepseek.com + 11 + + + diff --git a/app_deepseek/data/discuss_channel_data.xml b/app_deepseek/data/discuss_channel_data.xml new file mode 100644 index 00000000..723c776b --- /dev/null +++ b/app_deepseek/data/discuss_channel_data.xml @@ -0,0 +1,25 @@ + + + + + Deepseek Group Chat + + + + + + + discuss.channel + + email + + Welcome to Deepseek Ai Group Chat + Welcome to Deepseek Ai Group Chat.

+

Please ask me any question.

]]>
+
+ + + + +
+
diff --git a/app_deepseek/data/user_partner_data.xml b/app_deepseek/data/user_partner_data.xml new file mode 100644 index 00000000..b6b67975 --- /dev/null +++ b/app_deepseek/data/user_partner_data.xml @@ -0,0 +1,19 @@ + + + + + Deepseek聊天 + + + + + deepseek_chat@example.com + deepseek_chat@example.com + + + + + + + + diff --git a/app_deepseek/i18n/zh_CN.po b/app_deepseek/i18n/zh_CN.po new file mode 100644 index 00000000..46a125cf --- /dev/null +++ b/app_deepseek/i18n/zh_CN.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * app_ai_baidu +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e-20230721\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-15 10:35+0000\n" +"PO-Revision-Date: 2023-09-15 10:35+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: app_ai_baidu +#: model:ir.model.fields,help:app_ai_baidu.field_ai_robot__set_ai_model +msgid "" +"\n" +"GPT-4: Can understand Image, generate natural language or code.\n" +"GPT-3.5: A set of models that improve on GPT-3 and can understand as well as generate natural language or code\n" +"DALL·E: A model that can generate and edit images given a natural language prompt\n" +"Whisper: A model that can convert audio into text\n" +"Embeddings:\tA set of models that can convert text into a numerical form\n" +"CodexLimited: A set of models that can understand and generate code, including translating natural language to code\n" +"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" +" " +msgstr "" +"\n" +"GPT-4: 最新引擎,更好的智能回复。支持多模态输入如图片,但暂时没开放。\n" +"GPT-3.5: 问答引擎,可以根据提问回复答案或者代码。\n" +"DALL·E: 根据要求生成图片。\n" +"Whisper: 文字转语音引擎。\n" +"Embeddings:\tA set of models that can convert text into a numerical form\n" +"CodexLimited: A set of models that can understand and generate code, including translating natural language to code\n" +"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_ai_baidu +#: model:ir.model.fields,field_description:app_ai_baidu.field_ai_robot__provider +msgid "AI Provider" +msgstr "Ai服务商" + +#. module: app_ai_baidu +#: model:ir.model,name:app_ai_baidu.model_ai_robot +msgid "Ai Robot" +msgstr "Ai机器人" + +#. module: app_ai_baidu +#: model:ai.robot,name:app_ai_baidu.robot_bloomz_7b +#: model:ir.model.fields.selection,name:app_ai_baidu.selection__ai_robot__set_ai_model__bloomz-7b +msgid "BLOOMZ-7B" +msgstr "" + +#. module: app_ai_baidu +#: model:ir.model,name:app_ai_baidu.model_mail_channel +msgid "Discussion Channel" +msgstr "" + +#. module: app_ai_baidu +#: model:ir.model.fields.selection,name:app_ai_baidu.selection__ai_robot__set_ai_model__ernie-bot-turbo +msgid "ERNIE-Bot-turbo百度大语言" +msgstr "" + +#. module: app_ai_baidu +#: model:ir.model.fields.selection,name:app_ai_baidu.selection__ai_robot__set_ai_model__ernie-bot +msgid "ERNIE-Bot百度大语言" +msgstr "" + +#. module: app_ai_baidu +#. odoo-python +#: code:addons/app_ai_baidu/models/ai_robot.py:0 +#: code:addons/app_ai_baidu/models/ai_robot.py:0 +#, python-format +msgid "Please provide Ai Robot [%s] API Key and Secret Key first." +msgstr "请先设置 Ai机器人 [%s] 的 API Key 和 Secret Key。" + +#. module: app_ai_baidu +#: model:ir.model.fields,help:app_ai_baidu.field_ai_robot__client_secret +msgid "Provide API Client Secret here if needed." +msgstr "如果需要,请设置API Client Secret。" + +#. module: app_ai_baidu +#: model:ir.model.fields,field_description:app_ai_baidu.field_ai_robot__set_ai_model +msgid "Quick Set Model" +msgstr "模型快选" + +#. module: app_ai_baidu +#. odoo-python +#: code:addons/app_ai_baidu/models/mail_channel.py:0 +#, python-format +msgid "Response Timeout, please speak again." +msgstr "" + +#. module: app_ai_baidu +#: model:ir.model.fields,field_description:app_ai_baidu.field_ai_robot__client_secret +msgid "Secret Key" +msgstr "" + +#. module: app_ai_baidu +#. odoo-python +#: code:addons/app_ai_baidu/models/mail_channel.py:0 +#, python-format +msgid "温馨提示:您发送的内容含有敏感词,请修改内容后再向我发送。" +msgstr "" + +#. module: app_ai_baidu +#: model:ir.model.fields.selection,name:app_ai_baidu.selection__ai_robot__provider__baidu +msgid "百度千帆" +msgstr "" + +#. module: app_ai_baidu +#: model:ai.robot,name:app_ai_baidu.robot_baidu_ernie_bot +msgid "百度千帆ERNIE-Bot" +msgstr "" + +#. module: app_ai_baidu +#: model:ai.robot,name:app_ai_baidu.robot_baidu_ernie_bot_turbo +msgid "百度千帆ERNIE-Bot-turbo" +msgstr "" diff --git a/app_deepseek/models/__init__.py b/app_deepseek/models/__init__.py new file mode 100644 index 00000000..bacb61bd --- /dev/null +++ b/app_deepseek/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import ai_robot +from . import discuss_channel diff --git a/app_deepseek/models/ai_robot.py b/app_deepseek/models/ai_robot.py new file mode 100644 index 00000000..3e42ff32 --- /dev/null +++ b/app_deepseek/models/ai_robot.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- + +import base64 +import os +import requests, json +import logging +from openai import OpenAI +from http import HTTPStatus +from odoo import api, fields, models, modules, tools, _ +from odoo.exceptions import UserError + + +_logger = logging.getLogger(__name__) + + +class AiRobot(models.Model): + _inherit = 'ai.robot' + + provider = fields.Selection(selection_add=[('deepseek', 'Deepseek')], ondelete={'deepseek': 'set default'}) + set_ai_model = fields.Selection( + selection_add=[ + ('deepseek-chat', 'Deepseek Chat'), + ], + ondelete={'deepseek-chat': 'set default'}) + + @api.onchange('provider') + def _onchange_provider(self): + if self.provider == 'deepseek': + self.endpoint = 'https://api.deepseek.com' + # 取头像 + module_path = modules.get_module_path('app_ai', 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()) + return super()._onchange_provider() + + def get_deepseek(self, data, author_id, answer_id, param={}): + self.ensure_one() + api_key = self.openapi_api_key + if not api_key or not self.endpoint: + raise UserError(_("Please provide Ai Robot [%s] API Key and Endpoint URL first." % self.name)) + + if isinstance(data, list): + messages = data + else: + messages = [{"role": "user", "content": data}] + + url = self.endpoint + + client = OpenAI(api_key=api_key, base_url=self.endpoint) + response = client.chat.completions.create( + model=self.ai_model, + messages=messages + ) + res = response.model_dump() + if 'choices' in res: + return res + else: + _logger.warning('=====================deepseek output data: %s' % response.json()) + + return _("Response Timeout, please speak again.") + + def get_ai_post(self, res, author_id=False, answer_id=False, param={}): + if self.provider == 'deepseek': + usage = res['usage'] + content = res['choices'][0]['message']['content'] + return content, usage, True + else: + return super().get_ai_post(res, author_id, answer_id, param) diff --git a/app_deepseek/models/discuss_channel.py b/app_deepseek/models/discuss_channel.py new file mode 100644 index 00000000..01cccdff --- /dev/null +++ b/app_deepseek/models/discuss_channel.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- + +import logging +import datetime +from odoo import api, fields, models, tools, _ +from odoo.exceptions import UserError +from odoo.osv import expression +_logger = logging.getLogger(__name__) + + +class Channel(models.Model): + _inherit = 'discuss.channel' + + def get_openai_context(self, channel_id, author_id, answer_id, minutes=30, chat_count=0): + gpt_id = False + if self.ai_partner_id: + ai_user = self.env['res.users'].search([('partner_id', '=', self.ai_partner_id.id)], limit=1) + gpt_id = ai_user.mapped('gpt_id') + if gpt_id and gpt_id.provider == 'deepseek': + context_history = [] + afterTime = fields.Datetime.now() - datetime.timedelta(minutes=minutes) + message_model = self.env['mail.message'].sudo() + domain = [('res_id', '=', channel_id), + ('model', '=', 'discuss.channel'), + ('message_type', '!=', 'user_notification'), + ('parent_id', '!=', False), + ('is_ai', '=', True), + ('body', '!=', '

%s

' % _('Response Timeout, please speak again.')), + ('body', '!=', _('温馨提示:您发送的内容含有敏感词,请修改内容后再向我发送。'))] + if self.channel_type in ['group', 'channel']: + # 群聊增加时间限制,当前找所有人,不限制 author_id + domain = expression.AND([domain, [('date', '>=', afterTime)]]) + else: + domain = expression.AND([domain, [('author_id', '=', answer_id.id)]]) + if chat_count == 0: + ai_msg_list = [] + else: + ai_msg_list = message_model.with_context(tz='UTC').search(domain, order="id asc", limit=chat_count) + for ai_msg in ai_msg_list: + # 判断这个 ai_msg 是不是ai发,有才 insert。 判断 user_msg 是不是 user发的,有才 insert + user_msg = ai_msg.parent_id.sudo() + ai_content = str(ai_msg.body).replace("

", "").replace("

", "").replace("

", "") + if ai_msg.author_id.sudo().gpt_id and answer_id.sudo().gpt_id and ai_msg.author_id.sudo().gpt_id == answer_id.sudo().gpt_id: + context_history.insert(0, { + 'role': 'assistant', + 'content': ai_content, + }) + if not user_msg.author_id.gpt_id: + user_content = user_msg.body.replace("

", "").replace("

", "").replace('@%s' % answer_id.name, '').lstrip() + context_history.append({ + 'role': 'user', + 'content': user_content, + }) + context_history.append({ + 'role': 'assistant', + 'content': ai_content, + }) + return context_history + else: + return super(Channel, self).get_openai_context(channel_id, author_id, answer_id, minutes, chat_count) diff --git a/app_deepseek/security/odooai.cn b/app_deepseek/security/odooai.cn new file mode 100644 index 00000000..e69de29b diff --git a/app_deepseek/static/description/ai_banner.jpg b/app_deepseek/static/description/ai_banner.jpg new file mode 100644 index 00000000..45b4dea4 Binary files /dev/null and b/app_deepseek/static/description/ai_banner.jpg differ diff --git a/app_deepseek/static/description/apply1.jpg b/app_deepseek/static/description/apply1.jpg new file mode 100644 index 00000000..4284a5a5 Binary files /dev/null and b/app_deepseek/static/description/apply1.jpg differ diff --git a/app_deepseek/static/description/apply2.jpg b/app_deepseek/static/description/apply2.jpg new file mode 100644 index 00000000..fe900d1f Binary files /dev/null and b/app_deepseek/static/description/apply2.jpg differ diff --git a/app_deepseek/static/description/apply3.jpg b/app_deepseek/static/description/apply3.jpg new file mode 100644 index 00000000..957963b7 Binary files /dev/null and b/app_deepseek/static/description/apply3.jpg differ diff --git a/app_deepseek/static/description/apply4.jpg b/app_deepseek/static/description/apply4.jpg new file mode 100644 index 00000000..d8d02f84 Binary files /dev/null and b/app_deepseek/static/description/apply4.jpg differ diff --git a/app_deepseek/static/description/apply5.jpg b/app_deepseek/static/description/apply5.jpg new file mode 100644 index 00000000..546d4340 Binary files /dev/null and b/app_deepseek/static/description/apply5.jpg differ diff --git a/app_deepseek/static/description/apply6.jpg b/app_deepseek/static/description/apply6.jpg new file mode 100644 index 00000000..16be46f7 Binary files /dev/null and b/app_deepseek/static/description/apply6.jpg differ diff --git a/app_deepseek/static/description/apply7.jpg b/app_deepseek/static/description/apply7.jpg new file mode 100644 index 00000000..0e06f916 Binary files /dev/null and b/app_deepseek/static/description/apply7.jpg differ diff --git a/app_deepseek/static/description/baidu.png b/app_deepseek/static/description/baidu.png new file mode 100644 index 00000000..1d2cce7a Binary files /dev/null and b/app_deepseek/static/description/baidu.png differ diff --git a/app_deepseek/static/description/banner.gif b/app_deepseek/static/description/banner.gif new file mode 100644 index 00000000..644457bd Binary files /dev/null and b/app_deepseek/static/description/banner.gif differ diff --git a/app_deepseek/static/description/banner.png b/app_deepseek/static/description/banner.png new file mode 100644 index 00000000..0db28b4f Binary files /dev/null and b/app_deepseek/static/description/banner.png differ diff --git a/app_deepseek/static/description/bard.gif b/app_deepseek/static/description/bard.gif new file mode 100644 index 00000000..78de3734 Binary files /dev/null and b/app_deepseek/static/description/bard.gif differ diff --git a/app_deepseek/static/description/chatgpt.png b/app_deepseek/static/description/chatgpt.png new file mode 100644 index 00000000..20a03f9d Binary files /dev/null and b/app_deepseek/static/description/chatgpt.png differ diff --git a/app_deepseek/static/description/chatgpt4_azure.png b/app_deepseek/static/description/chatgpt4_azure.png new file mode 100644 index 00000000..8f24124c Binary files /dev/null and b/app_deepseek/static/description/chatgpt4_azure.png differ diff --git a/app_deepseek/static/description/chatgpt_blue.png b/app_deepseek/static/description/chatgpt_blue.png new file mode 100644 index 00000000..1e94178f Binary files /dev/null and b/app_deepseek/static/description/chatgpt_blue.png differ diff --git a/app_deepseek/static/description/chatgpt_green.jpg b/app_deepseek/static/description/chatgpt_green.jpg new file mode 100644 index 00000000..f3350c62 Binary files /dev/null and b/app_deepseek/static/description/chatgpt_green.jpg differ diff --git a/app_deepseek/static/description/demo01.jpg b/app_deepseek/static/description/demo01.jpg new file mode 100644 index 00000000..04203aa3 Binary files /dev/null and b/app_deepseek/static/description/demo01.jpg differ diff --git a/app_deepseek/static/description/demo02.jpg b/app_deepseek/static/description/demo02.jpg new file mode 100644 index 00000000..9198bb82 Binary files /dev/null and b/app_deepseek/static/description/demo02.jpg differ diff --git a/app_deepseek/static/description/demo03.jpg b/app_deepseek/static/description/demo03.jpg new file mode 100644 index 00000000..f8f05ac6 Binary files /dev/null and b/app_deepseek/static/description/demo03.jpg differ diff --git a/app_deepseek/static/description/demo04.jpg b/app_deepseek/static/description/demo04.jpg new file mode 100644 index 00000000..0051ee1d Binary files /dev/null and b/app_deepseek/static/description/demo04.jpg differ diff --git a/app_deepseek/static/description/demo1.jpg b/app_deepseek/static/description/demo1.jpg new file mode 100644 index 00000000..ff7e66d4 Binary files /dev/null and b/app_deepseek/static/description/demo1.jpg differ diff --git a/app_deepseek/static/description/demo2.jpg b/app_deepseek/static/description/demo2.jpg new file mode 100644 index 00000000..c1fad2d0 Binary files /dev/null and b/app_deepseek/static/description/demo2.jpg differ diff --git a/app_deepseek/static/description/demo3.jpg b/app_deepseek/static/description/demo3.jpg new file mode 100644 index 00000000..427f8b90 Binary files /dev/null and b/app_deepseek/static/description/demo3.jpg differ diff --git a/app_deepseek/static/description/demo4.jpg b/app_deepseek/static/description/demo4.jpg new file mode 100644 index 00000000..b83102fa Binary files /dev/null and b/app_deepseek/static/description/demo4.jpg differ diff --git a/app_deepseek/static/description/demo5.jpg b/app_deepseek/static/description/demo5.jpg new file mode 100644 index 00000000..c8f3ffd6 Binary files /dev/null and b/app_deepseek/static/description/demo5.jpg differ diff --git a/app_deepseek/static/description/demo6.jpg b/app_deepseek/static/description/demo6.jpg new file mode 100644 index 00000000..af62be26 Binary files /dev/null and b/app_deepseek/static/description/demo6.jpg differ diff --git a/app_deepseek/static/description/demo7.jpg b/app_deepseek/static/description/demo7.jpg new file mode 100644 index 00000000..d65a8b2a Binary files /dev/null and b/app_deepseek/static/description/demo7.jpg differ diff --git a/app_deepseek/static/description/demo71.jpg b/app_deepseek/static/description/demo71.jpg new file mode 100644 index 00000000..a5c83ab2 Binary files /dev/null and b/app_deepseek/static/description/demo71.jpg differ diff --git a/app_deepseek/static/description/demo8.jpg b/app_deepseek/static/description/demo8.jpg new file mode 100644 index 00000000..e17bab42 Binary files /dev/null and b/app_deepseek/static/description/demo8.jpg differ diff --git a/app_deepseek/static/description/demo81.jpg b/app_deepseek/static/description/demo81.jpg new file mode 100644 index 00000000..cf73a540 Binary files /dev/null and b/app_deepseek/static/description/demo81.jpg differ diff --git a/app_deepseek/static/description/demo9.jpg b/app_deepseek/static/description/demo9.jpg new file mode 100644 index 00000000..e8760f93 Binary files /dev/null and b/app_deepseek/static/description/demo9.jpg differ diff --git a/app_deepseek/static/description/demo91.jpg b/app_deepseek/static/description/demo91.jpg new file mode 100644 index 00000000..ccad6d14 Binary files /dev/null and b/app_deepseek/static/description/demo91.jpg differ diff --git a/app_deepseek/static/description/demo_deepseek.jpg b/app_deepseek/static/description/demo_deepseek.jpg new file mode 100644 index 00000000..85495a94 Binary files /dev/null and b/app_deepseek/static/description/demo_deepseek.jpg differ diff --git a/app_deepseek/static/description/demoa.jpg b/app_deepseek/static/description/demoa.jpg new file mode 100644 index 00000000..02e4e950 Binary files /dev/null and b/app_deepseek/static/description/demoa.jpg differ diff --git a/app_deepseek/static/description/demob.jpg b/app_deepseek/static/description/demob.jpg new file mode 100644 index 00000000..9d845f51 Binary files /dev/null and b/app_deepseek/static/description/demob.jpg differ diff --git a/app_deepseek/static/description/icon.png b/app_deepseek/static/description/icon.png new file mode 100644 index 00000000..e8a67144 Binary files /dev/null and b/app_deepseek/static/description/icon.png differ diff --git a/app_deepseek/static/description/index.html b/app_deepseek/static/description/index.html new file mode 100644 index 00000000..e2ef618d --- /dev/null +++ b/app_deepseek/static/description/index.html @@ -0,0 +1,322 @@ + + + + +
+

Deepseek Ai for odoo ai center,Mass AIGC Generator.

+

DeepSeek深度求索Ai支持-全Ai服务管理中心,全网Ai对接核心框架

+
+ + +
+
+
+
+

Latest update: v18.0.25.02.07

+
+ +
+
+
+ Key features: +
    +
  • + + 1. Deepseek Ai support for Multi Ai robot Connector. Ai Chat, character setup and train. +
  • +
  • + + 2. Multi Ai support including Google Bard Ai, Azure Ai, Chatgpt 4, Chatgpt 3.5 Turbo, Chatgpt 3 Davinci, Chatgpt 2 Code Optimized, 'Dall-E Image. +
  • +
  • + + 3. Bind ChatGpt Api to user. So we can chat to robot user or use ChatGpt Channel for Group Chat. +
  • +
  • + + 4. White and black List for ChatGpt. +
  • +
  • + + 5. Setup Demo Chat time for every new user. +
  • +
  • + + 6. Easy Start and Stop ChatGpt. +
  • +
  • + + 7. Evaluation the ai robot to make better response. This training. +
  • +
  • + + 8. Add api support Connect the Microsoft Azure OpenAI Service. +
  • +
  • + + 9. Can set Synchronous or Asynchronous mode for Ai response. +
  • +
  • + + 10.Filter Sensitive Words Setup. +
  • +
  • + + 11. Multi-language Support. Multi-Company Support. +
  • +
  • + + 12. Support Odoo 16,15,14,13,12, Enterprise and Community and odoo.sh Edition. +
  • +
  • + + 13. Full Open Source. +
  • +
+
+
+
+
+
+
+ +
+
+

Add more Ai support like Deepseek Ai, google bard, chatgpt 4, baidu china

+

Need to navigate to odoo app store to buy and install addons

+
+ +
+

Please apply for the api first from deepseek follow https://api-docs.deepseek.com/

+
+ +
+

Setup for your own key

+
+ +
+
+
+ +
+
+

Easy to use Ai Robot with multi Provider. Easy chat, easy help

+

Deepseek or Open Ai for more smart. 中国用户可以使用deepseek

+
+ +
+
+
+ +
+
+

1. Multi ChatGpt openAI robot Connector. Chat and train.

+

Goto Setting--> GPT Robot to setup your robot api.

+

Input your api key, And Select the api model you need to use.

+
+ +
+

You can set the Temperature higer for more creative answer.

+
+ +
+
+
+ + +
+
+

2. Multi Api support, Chatgpt 3.5 Turbo, Chatgpt 3 Davinci, Chatgpt 2 Code Optimized, 'Dall-E Image.

+

Choose the model you want to use

+
+ +
+

You can set the Temperature higer for more creative answer.

+
+ +
+
+
+ +
+
+

3. Bind ChatGpt Api to user. So we can chat to robot user or use ChatGpt Channel for Group Chat.

+

Go Settings ->users, bind chatgpt to some user.

+ +
+

So you can have many user, and many chatgpt robot. This provide you an Ai pool.

+
+ +
+

You can set the blacklist to this chatgpt robot to limit request. Also you can setup Demo time for every normal user..

+
+ +
+ +
+ +
+
+

4. White and black List for ChatGpt.

+

5. Setup Demo Chat time for every new user.

+

You can set the blacklist to this chatgpt robot to limit request. Also you can setup Demo time for every normal user..

+
+ +
+
+
+ +
+
+

6. Easy Start and Stop ChatGpt..

+

You can easy chat with the apt robot with odoo IM

+
+ +
+

You can chat with several robot in the same time

+
+ +
+

If you have more than 1 robot in the group. you can @ the specify robot.

+
+ +
+
+
+ + +
+
+

7. Evaluation the ai robot to make better response. This training.

+

You can Evaluation chatgpt's answer. Mark as good for good answer. Mark as back for bad answer.

+

With Evaluation, you can make your ai robot more smart. +

+ +
+
+
+ +
+
+

8. Add api support Connect the Microsoft Azure OpenAI Service.

+

Azure openai add. It is for china and other country which no chatgpt service.

+
+ +
+
+
+ +
+
+

9. Can set Synchronous or Asynchronous mode for Ai response.

+

Synchronous(default) mode can get response then ask question again. Asynchronous mode would make you do other thing when waiting for response.

+
+ +
+
+
+ +
+
+

Multi-language Support..

+

+
+ +
+
+
+ + +
+

- How to setup and use -

+
+
+
+

+ 1. Get ChatGPT Api key from openai or azure. +

+

Api From Azure, please read

+

https://www.odooai.cn/blog/odoo-install-deploy-6/chatgpt4-china-application-chatgpt3-5-free-one-year-microsoft-azure-openai-api-registration-tutorial-odoo-aicenter-integration-28

+ +

Api For deepseek, please follow

+
+
+ +
+
+

2. Setup your Api information from Settings -- Users --Ai Robot

+
+
+ +
+
+

3. Setup your Api Provider(openai) , api key, End point

+
+
+ +
+

As openai change the api often, sometime you need to check

+

https://platform.openai.com/docs/introduction

+
+

4.Bind your Ai Robot (GPT) to a User. We already setup a sample.

+
+
+ +
+
+

5. Bind your Ai User to Channel from Discuss. We already setup a sample.

+
+
+ +
+
+
6. You can setup the Ai system context and Character.
+
+
+ +
+
+
7. You can setup Lots of channel for subjects and projects..
+
+
+ +
+
+
+
+ + + +
+
+
+

Technical Help & Support

+
+
+
+

+ For any type of technical help & support requests, Feel free to contact us

+ + odoo@china.com +

+ Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)

+ + 300883@qq.com +
+
+

Visit our website for more support.

+

https://www.odooai.cn

+
+
+
+
+ \ No newline at end of file diff --git a/app_deepseek/static/description/setup2.jpg b/app_deepseek/static/description/setup2.jpg new file mode 100644 index 00000000..c2488f7c Binary files /dev/null and b/app_deepseek/static/description/setup2.jpg differ diff --git a/app_deepseek/static/description/setup3.jpg b/app_deepseek/static/description/setup3.jpg new file mode 100644 index 00000000..ff82da66 Binary files /dev/null and b/app_deepseek/static/description/setup3.jpg differ diff --git a/app_deepseek/static/description/setup4.jpg b/app_deepseek/static/description/setup4.jpg new file mode 100644 index 00000000..3e6b156e Binary files /dev/null and b/app_deepseek/static/description/setup4.jpg differ diff --git a/app_deepseek/static/description/setup5.jpg b/app_deepseek/static/description/setup5.jpg new file mode 100644 index 00000000..dbe6602e Binary files /dev/null and b/app_deepseek/static/description/setup5.jpg differ diff --git a/app_deepseek/static/description/setup6.jpg b/app_deepseek/static/description/setup6.jpg new file mode 100644 index 00000000..1fd3bc86 Binary files /dev/null and b/app_deepseek/static/description/setup6.jpg differ diff --git a/app_deepseek/static/description/setup7.jpg b/app_deepseek/static/description/setup7.jpg new file mode 100644 index 00000000..fa279283 Binary files /dev/null and b/app_deepseek/static/description/setup7.jpg differ diff --git a/app_deepseek/static/src/img/deepseek.png b/app_deepseek/static/src/img/deepseek.png new file mode 100644 index 00000000..e8a67144 Binary files /dev/null and b/app_deepseek/static/src/img/deepseek.png differ diff --git a/app_deepseek/static/src/odooai.cn b/app_deepseek/static/src/odooai.cn new file mode 100644 index 00000000..e69de29b diff --git a/app_deepseek/views/ai_robot_views.xml b/app_deepseek/views/ai_robot_views.xml new file mode 100644 index 00000000..4d2f2abc --- /dev/null +++ b/app_deepseek/views/ai_robot_views.xml @@ -0,0 +1,13 @@ + + + +