add deepseek
4
app_deepseek/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# from . import controllers
|
||||
from . import models
|
||||
64
app_deepseek/__manifest__.py
Normal file
@@ -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': '17.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,
|
||||
}
|
||||
3
app_deepseek/controllers/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import main
|
||||
10
app_deepseek/controllers/main.py
Normal file
@@ -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')
|
||||
13
app_deepseek/data/ai_robot_data.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo noupdate="1">
|
||||
<record id="robot_deepseek_chat" model="ai.robot">
|
||||
<field name="name">DeepSeek Ai</field>
|
||||
<field name="provider">deepseek</field>
|
||||
<field name="ai_model">deepseek-chat</field>
|
||||
<field name="set_ai_model">deepseek-chat</field>
|
||||
<field name="api_version" eval="False"/>
|
||||
<field name="endpoint">https://api.deepseek.com</field>
|
||||
<field name="sequence">11</field>
|
||||
<field name="image_avatar" type="base64" file="app_deepseek/static/src/img/deepseek.png"/>
|
||||
</record>
|
||||
</odoo>
|
||||
25
app_deepseek/data/discuss_channel_data.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record model="discuss.channel" id="channel_deepseek">
|
||||
<field name="name">Deepseek Group Chat</field>
|
||||
<!-- <field name="description">你的职责是帮我们解决各行业你是各行业的专家,专门解决大家的行业疑难问题。</field>-->
|
||||
<field name="image_128" type="base64" file="app_deepseek/static/src/img/deepseek.png"/>
|
||||
<field name="ai_partner_id" ref="app_deepseek.partner_deepseek_chat"/>
|
||||
</record>
|
||||
|
||||
<record model="mail.message" id="module_install_notification">
|
||||
<field name="model">discuss.channel</field>
|
||||
<field name="res_id" ref="app_deepseek.channel_deepseek"/>
|
||||
<field name="message_type">email</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="subject">Welcome to Deepseek Ai Group Chat</field>
|
||||
<field name="body"><![CDATA[<p>Welcome to Deepseek Ai Group Chat.</p>
|
||||
<p>Please ask me any question.</p>]]></field>
|
||||
</record>
|
||||
|
||||
<record model="discuss.channel" id="app_deepseek.channel_deepseek">
|
||||
<field name="group_ids" eval="[Command.link(ref('base.group_user'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
19
app_deepseek/data/user_partner_data.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="partner_deepseek_chat" model="res.partner">
|
||||
<field name="name">Deepseek聊天</field>
|
||||
<field name="image_1920" type="base64" file="app_deepseek/static/src/img/deepseek.png"/>
|
||||
</record>
|
||||
|
||||
<record id="user_deepseek_chat" model="res.users">
|
||||
<field name="login">deepseek_chat@example.com</field>
|
||||
<field name="email">deepseek_chat@example.com</field>
|
||||
<field name="partner_id" ref="partner_deepseek_chat"/>
|
||||
<field name="gpt_id" ref="robot_deepseek_chat"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="company_ids" eval="[Command.link(ref('base.main_company'))]"/>
|
||||
<field name="groups_id" eval="[Command.link(ref('base.group_user'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
123
app_deepseek/i18n/zh_CN.po
Normal file
@@ -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 ""
|
||||
4
app_deepseek/models/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import ai_robot
|
||||
from . import discuss_channel
|
||||
71
app_deepseek/models/ai_robot.py
Normal file
@@ -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)
|
||||
60
app_deepseek/models/discuss_channel.py
Normal file
@@ -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', '!=', '<p>%s</p>' % _('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("<p>", "").replace("</p>", "").replace("<p>", "")
|
||||
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("<p>", "").replace("</p>", "").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)
|
||||
0
app_deepseek/security/odooai.cn
Normal file
BIN
app_deepseek/static/description/ai_banner.jpg
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
app_deepseek/static/description/apply1.jpg
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
app_deepseek/static/description/apply2.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
app_deepseek/static/description/apply3.jpg
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
app_deepseek/static/description/apply4.jpg
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
app_deepseek/static/description/apply5.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
app_deepseek/static/description/apply6.jpg
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
app_deepseek/static/description/apply7.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
app_deepseek/static/description/baidu.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
app_deepseek/static/description/banner.gif
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
app_deepseek/static/description/banner.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
app_deepseek/static/description/bard.gif
Normal file
|
After Width: | Height: | Size: 271 KiB |
BIN
app_deepseek/static/description/chatgpt.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
app_deepseek/static/description/chatgpt4_azure.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
app_deepseek/static/description/chatgpt_blue.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
app_deepseek/static/description/chatgpt_green.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_deepseek/static/description/demo01.jpg
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
app_deepseek/static/description/demo02.jpg
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
app_deepseek/static/description/demo03.jpg
Normal file
|
After Width: | Height: | Size: 191 KiB |
BIN
app_deepseek/static/description/demo04.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
app_deepseek/static/description/demo1.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
app_deepseek/static/description/demo2.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
app_deepseek/static/description/demo3.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
app_deepseek/static/description/demo4.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app_deepseek/static/description/demo5.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
app_deepseek/static/description/demo6.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
app_deepseek/static/description/demo7.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
app_deepseek/static/description/demo71.jpg
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
app_deepseek/static/description/demo8.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
app_deepseek/static/description/demo81.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
app_deepseek/static/description/demo9.jpg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
app_deepseek/static/description/demo91.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
app_deepseek/static/description/demo_deepseek.jpg
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
app_deepseek/static/description/demoa.jpg
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
app_deepseek/static/description/demob.jpg
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
app_deepseek/static/description/icon.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
322
app_deepseek/static/description/index.html
Normal file
@@ -0,0 +1,322 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
# Copyright (C) 2009~2024 odooAi.cn
|
||||
##############################################################################
|
||||
-->
|
||||
<html>
|
||||
<!-- begin title-->
|
||||
<section class="oe_container container o_cc o_cc2">
|
||||
<h2 class="text-center bg-warning text-white pt24 pb24">Deepseek Ai for odoo ai center,Mass AIGC Generator. </h2>
|
||||
<h4 class="text-center">DeepSeek深度求索Ai支持-全Ai服务管理中心,全网Ai对接核心框架</h4>
|
||||
</section>
|
||||
<!-- end title-->
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced" >
|
||||
<div class="row">
|
||||
<div class="oe_row">
|
||||
<h3>Latest update: v17.0.25.02.07</h3>
|
||||
<div class="row">
|
||||
<img class="oe_demo oe_screenshot img img-fluid" style="max-height: 100%;" src="banner.png">
|
||||
</div>
|
||||
<div class="oe_span12 oe_spaced">
|
||||
<div class="alert alert-info" style="padding:8px;font-weight: 300; font-size: 20px;">
|
||||
<i class="fa fa-hand-o-right"></i><b> Key features: </b>
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
1. Deepseek Ai support for Multi Ai robot Connector. Ai Chat, character setup and train.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
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.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
3. Bind ChatGpt Api to user. So we can chat to robot user or use ChatGpt Channel for Group Chat.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
4. White and black List for ChatGpt.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
5. Setup Demo Chat time for every new user.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
6. Easy Start and Stop ChatGpt.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
7. Evaluation the ai robot to make better response. This training.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
8. Add api support Connect the Microsoft Azure OpenAI Service.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
9. Can set Synchronous or Asynchronous mode for Ai response.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
10.Filter Sensitive Words Setup.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
11. Multi-language Support. Multi-Company Support.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
12. Support Odoo 16,15,14,13,12, Enterprise and Community and odoo.sh Edition.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-check-square-o text-primary"></i>
|
||||
13. Full Open Source.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">Add more Ai support like Deepseek Ai, google bard, chatgpt 4, baidu china</h2>
|
||||
<h4 class="oe_slogan"> Need to navigate to odoo app store to buy and install addons</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo01.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Please apply for the api first from deepseek follow https://api-docs.deepseek.com/</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="apply1.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Setup for your own key</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="apply5.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">Easy to use Ai Robot with multi Provider. Easy chat, easy help</h2>
|
||||
<h4 class="oe_slogan">Deepseek or Open Ai for more smart. 中国用户可以使用deepseek</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo_deepseek.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">1. Multi ChatGpt openAI robot Connector. Chat and train.</h2>
|
||||
<h4 class="oe_slogan"> Goto Setting--> GPT Robot to setup your robot api. </h4>
|
||||
<p> Input your api key, And Select the api model you need to use.</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo1.jpg"/>
|
||||
</div>
|
||||
<p> You can set the Temperature higer for more creative answer.</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo2.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">2. Multi Api support, Chatgpt 3.5 Turbo, Chatgpt 3 Davinci, Chatgpt 2 Code Optimized, 'Dall-E Image.</h2>
|
||||
<h4 class="oe_slogan"> Choose the model you want to use</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo2.jpg"/>
|
||||
</div>
|
||||
<p> You can set the Temperature higer for more creative answer.</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo3.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">3. Bind ChatGpt Api to user. So we can chat to robot user or use ChatGpt Channel for Group Chat.</h2>
|
||||
<h4 class="oe_slogan"> Go Settings ->users, bind chatgpt to some user.</h4>
|
||||
<img src="demo4.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan"> So you can have many user, and many chatgpt robot. This provide you an Ai pool.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo5.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan"> You can set the blacklist to this chatgpt robot to limit request. Also you can setup Demo time for every normal user..</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo6.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">4. White and black List for ChatGpt.</h2>
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">5. Setup Demo Chat time for every new user.</h2>
|
||||
<h4 class="oe_slogan"> You can set the blacklist to this chatgpt robot to limit request. Also you can setup Demo time for every normal user..</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo6.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">6. Easy Start and Stop ChatGpt..</h2>
|
||||
<h4 class="oe_slogan"> You can easy chat with the apt robot with odoo IM</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo7.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan"> You can chat with several robot in the same time</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo8.jpg"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan"> If you have more than 1 robot in the group. you can @ the specify robot.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo9.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">7. Evaluation the ai robot to make better response. This training.</h2>
|
||||
<h4 class="oe_slogan"> You can Evaluation chatgpt's answer. Mark as good for good answer. Mark as back for bad answer.</h4>
|
||||
<p> With Evaluation, you can make your ai robot more smart.
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo71.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">8. Add api support Connect the Microsoft Azure OpenAI Service.</h2>
|
||||
<h4 class="oe_slogan"> Azure openai add. It is for china and other country which no chatgpt service.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo81.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">9. Can set Synchronous or Asynchronous mode for Ai response.</h2>
|
||||
<h4 class="oe_slogan"> Synchronous(default) mode can get response then ask question again. Asynchronous mode would make you do other thing when waiting for response.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo91.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">Multi-language Support..</h2>
|
||||
<h4 class="oe_slogan"> </h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="cnreadme.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- begin howto-->
|
||||
<section class="oe_container container s_text_block o_colored_level pt16 pb16">
|
||||
<h2 class="text-center bg-info text-white pt16 pb16">- How to setup and use -</h2>
|
||||
</section>
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h4 class="pt16">
|
||||
1. Get ChatGPT Api key from openai or azure.
|
||||
</h4>
|
||||
<p>Api From Azure, please read </p>
|
||||
<p>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 </p>
|
||||
|
||||
<p>Api For deepseek, please follow</p>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="apply1.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="pt16">2. Setup your Api information from Settings -- Users --Ai Robot</h4>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup2.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="pt16">3. Setup your Api Provider(openai) , api key, End point</h4>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup3.jpg">
|
||||
</div>
|
||||
<p> As openai change the api often, sometime you need to check</p>
|
||||
<p> https://platform.openai.com/docs/introduction</p>
|
||||
</div>
|
||||
<h4 class="pt16">4.Bind your Ai Robot (GPT) to a User. We already setup a sample.</h4>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup4.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="pt16">5. Bind your Ai User to Channel from Discuss. We already setup a sample.</h4>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup5.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<h5 class="pt16">6. You can setup the Ai system context and Character.</h5>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup6.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<h5 class="pt16">7. You can setup Lots of channel for subjects and projects..</h5>
|
||||
<div class="row">
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setup7.jpg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- end howto-->
|
||||
|
||||
<!-- begin support-->
|
||||
<section class="container oe_dark">
|
||||
<div class="oe_row oe_spaced text-center">
|
||||
<div class="row">
|
||||
<h2 class="oe_slogan">Technical Help & Support</h2>
|
||||
</div>
|
||||
<div class="col-md-12 pad0">
|
||||
<div class="oe_mt16">
|
||||
<p><h4 class="pt16">
|
||||
For any type of technical help & support requests, Feel free to contact us</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:odoo@china.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> odoo@china.com</a>
|
||||
<p><h4 class="pt16">
|
||||
Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:300883@qq.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> 300883@qq.com</a>
|
||||
</div>
|
||||
<div class="oe_mt16">
|
||||
<h4 class="pt16">Visit our website for more support.</h4>
|
||||
<h4 class="pt16">https://www.odooai.cn</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</html>
|
||||
BIN
app_deepseek/static/description/setup2.jpg
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
app_deepseek/static/description/setup3.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
app_deepseek/static/description/setup4.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
app_deepseek/static/description/setup5.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
app_deepseek/static/description/setup6.jpg
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
app_deepseek/static/description/setup7.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
app_deepseek/static/src/img/deepseek.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
0
app_deepseek/static/src/odooai.cn
Normal file
13
app_deepseek/views/ai_robot_views.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!-- <record id="baidu_ai_robot_form_view" model="ir.ui.view">
|
||||
<field name="name">baidu.ai.robot.form</field>
|
||||
<field name="model">ai.robot</field>
|
||||
<field name="inherit_id" ref="app_chatgpt.ai_robot_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='openapi_api_key']" position="after">
|
||||
<field name="client_secret" password="True"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record> -->
|
||||
</odoo>
|
||||