# Conflicts:
#	app_chatgpt/models/ai_robot.py
This commit is contained in:
ivan deng
2023-04-13 01:22:07 +08:00
8 changed files with 184 additions and 104 deletions

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-30 10:30+0000\n"
"PO-Revision-Date: 2023-03-30 10:30+0000\n"
"POT-Creation-Date: 2023-04-12 08:53+0000\n"
"PO-Revision-Date: 2023-04-12 08:53+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -420,6 +420,11 @@ msgstr ""
msgid "ABCD"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__ai_completion_tokens
msgid "AI Completion Tokens"
msgstr "AI使用Token"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__ai_model
msgid "AI Model"
@@ -478,13 +483,13 @@ msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Ai Center(Chatgpt)"
msgstr "Ai服务中心(Chatgpt)"
msgid "After timeout seconds then Disconnect"
msgstr "上下文连接超时(秒)"
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Seconds"
msgstr ""
msgid "Ai Center(Chatgpt)"
msgstr "Ai服务中心(Chatgpt)"
#. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_users__gpt_policy__all
@@ -558,6 +563,13 @@ msgstr ""
msgid "Azure"
msgstr ""
#. module: app_chatgpt
#. odoo-python
#: code:addons/app_chatgpt/models/ai_robot.py:0
#, python-format
msgid "Azure no response"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -588,6 +600,7 @@ msgid "Bactrian"
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"
@@ -768,6 +781,16 @@ msgstr ""
msgid "Config Settings"
msgstr "配置设置"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_config_settings__openapi_context_timeout
msgid "Connect Timout"
msgstr "上下文连接超时"
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_res_partner
msgid "Contact"
msgstr "联系人"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__create_uid
msgid "Created by"
@@ -851,6 +874,11 @@ msgstr ""
msgid "END arrow"
msgstr ""
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_thread
msgid "Email Thread"
msgstr "EMail线程"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__endpoint
msgid "End Point"
@@ -924,6 +952,11 @@ msgstr ""
msgid "Filter Sensitive Words"
msgstr "是否启用敏感词过滤"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__first_ask_time
msgid "First Ask Time"
msgstr "首次发问时间"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -976,6 +1009,16 @@ msgstr ""
msgid "Gemini"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_form_view
msgid "Get List Model"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.ai_robot_form_view
msgid "Get Model Info"
msgstr ""
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_ai_robot
msgid "Gpt Robot"
@@ -996,6 +1039,11 @@ msgstr ""
msgid "Hindu"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__human_prompt_tokens
msgid "Human Prompt Tokens"
msgstr "人员使用Token"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1068,7 +1116,6 @@ msgstr ""
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "Japanese"
msgstr ""
@@ -1356,6 +1403,11 @@ msgstr ""
msgid "Max Length"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__max_number
msgid "Max Number of Call"
msgstr "最大发问次数"
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_mail_message
msgid "Message"
@@ -1484,6 +1536,11 @@ msgstr ""
msgid "No robot provider found"
msgstr "没有设置Ai接口供应方"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__used_number
msgid "Number of Used"
msgstr "已发问次数"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1714,6 +1771,11 @@ msgstr ""
msgid "Scorpius"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Seconds"
msgstr "秒"
#. module: app_chatgpt
#: model:ir.model.fields.selection,name:app_chatgpt.selection__res_users__gpt_policy__limit
msgid "Selected Users"
@@ -1727,13 +1789,23 @@ msgstr "额外敏感词"
#. module: app_chatgpt
#: model:ir.model.fields,help:app_chatgpt.field_ai_robot__sensitive_words
msgid "Sensitive word filtering. Separate keywords with a carriage return."
msgstr "敏感词过滤。请用回车符分隔关键词。"
msgstr "使用此文件进行基础过滤 models/lib/sensi_words.txt"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_ai_robot__sequence
msgid "Sequence"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__service_end_date
msgid "Service End Date"
msgstr "服务到期时间"
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__service_start_date
msgid "Service Start Date"
msgstr "服务开始时间"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1880,6 +1952,11 @@ msgstr ""
msgid "Temperature"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Timout then disconnect(s)"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1902,6 +1979,11 @@ msgstr ""
msgid "Tokyo tower"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_users__tokens_total
msgid "Total Tokens"
msgstr "总使用Token量"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -1959,10 +2041,20 @@ msgstr ""
msgid "UP! button"
msgstr ""
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.app_chatgpt_res_users_form
msgid "Usage"
msgstr "使用情况"
#. module: app_chatgpt
#: model:ir.model.fields,help:app_chatgpt.field_ai_robot__is_filtering
msgid "Use base Filter in dir models/lib/sensi_words.txt"
msgstr ""
#. module: app_chatgpt
#: model:ir.model,name:app_chatgpt.model_res_users
msgid "User"
msgstr ""
msgstr "用户"
#. module: app_chatgpt
#. odoo-javascript
@@ -11554,8 +11646,6 @@ msgstr ""
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "hand"
msgstr ""
@@ -12525,7 +12615,6 @@ msgstr ""
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "ideograph"
msgstr ""
@@ -15194,9 +15283,6 @@ msgstr ""
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "mark"
msgstr ""
@@ -15215,27 +15301,6 @@ msgstr ""
msgid "mark_as_good. thumbs up"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "mark_as_neutral. open hands"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "mark_as_redundant. waving hand"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "mark_as_unhelpful. Need more answer"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -16420,7 +16485,6 @@ msgstr ""
#. module: app_chatgpt
#. 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
#, python-format
msgid "neutral"
msgstr ""
@@ -17034,7 +17098,6 @@ msgstr ""
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "open"
msgstr ""
@@ -17056,7 +17119,6 @@ msgstr ""
#. module: app_chatgpt
#. 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
#, python-format
msgid "open hands"
msgstr ""
@@ -19868,13 +19930,6 @@ msgstr ""
msgid "red-faced"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "redundant"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -24802,13 +24857,6 @@ msgstr ""
msgid "unhappy"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "unhelpful"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -24949,11 +24997,6 @@ msgstr ""
msgid "upwards button"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,help:app_chatgpt.field_ai_robot__sensitive_words
msgid "Use base Filter in dir models/lib/sensi_words.txt"
msgstr "使用此文件进行基础过滤 models/lib/sensi_words.txt"
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -25402,7 +25445,6 @@ msgstr ""
#. module: app_chatgpt
#. 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
#, python-format
msgid "wave"
msgstr ""
@@ -25411,7 +25453,6 @@ msgstr ""
#. 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
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "waving"
msgstr ""
@@ -27089,13 +27130,6 @@ msgstr ""
msgid "“monthly amount”"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
#, python-format
msgid "“no vacancy”"
msgstr ""
#. module: app_chatgpt
#. odoo-javascript
#: code:addons/app_chatgpt/static/src/models_data/emoji_data.js:0
@@ -27159,22 +27193,6 @@ msgstr ""
msgid "ココ"
msgstr ""
#. module: app_chatgpt
#: model:ir.model.fields,field_description:app_chatgpt.field_res_config_settings__openapi_context_timeout
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "Connect Timout"
msgstr "上下文连接超时"
#. module: app_chatgpt
#: model_terms:ir.ui.view,arch_db:app_chatgpt.is_res_config_settings_view
msgid "After timeout seconds then Disconnect"
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

@@ -6,3 +6,4 @@ from . import ai_robot
from . import res_partner
from . import res_users
from . import mail_message
from . import mail_thread

View File

@@ -73,6 +73,7 @@ GPT-3 A set of models that can understand and generate natural language
return False
def get_ai_post(self, res, sender_id=False, answer_id=False, **kwargs):
res = self.filter_sensitive_words(res)
return res
def get_ai_model_info(self):
@@ -108,12 +109,14 @@ GPT-3 A set of models that can understand and generate natural language
r_text = 'No response.'
raise UserError(r_text)
def get_openai(self, data, partner_name='odoo', *args):
def get_openai(self, data, sender_id, answer_id, *args):
self.ensure_one()
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {self.openapi_api_key}"}
R_TIMEOUT = self.ai_timeout or 120
o_url = self.endpoint or "https://api.openai.com/v1/chat/completions"
partner_name = 'odoo'
# if sender_id:
# partner_name = sender_id.name
# 以下处理 open ai
# 获取模型信息
# list_model = requests.get("https://api.openai.com/v1/models", headers=headers)
@@ -142,13 +145,32 @@ GPT-3 A set of models that can understand and generate natural language
}
_logger.warning('=====================open input pdata: %s' % pdata)
response = requests.post(o_url, data=json.dumps(pdata), headers=headers, timeout=R_TIMEOUT)
res = response.json()
if 'choices' in res:
# for rec in res:
# res = rec['message']['content']
res = '\n'.join([x['message']['content'] for x in res['choices']])
res = self.filter_sensitive_words(res)
return res
try:
res = response.json()
if 'usage' in res:
usage = res['usage']
prompt_tokens = usage['prompt_tokens']
completion_tokens = usage['completion_tokens']
total_tokens = usage['total_tokens']
vals = {
'human_prompt_tokens': sender_id.human_prompt_tokens + prompt_tokens,
'ai_completion_tokens': sender_id.ai_completion_tokens + completion_tokens,
'tokens_total': sender_id.tokens_total + total_tokens,
'used_number': sender_id.used_number + 1,
}
if not sender_id.first_ask_time:
ask_date = response.headers.get("Date")
vals.update({
'first_ask_time': ask_date
})
sender_id.write(vals)
if 'choices' in res:
# for rec in res:
# res = rec['message']['content']
res = '\n'.join([x['message']['content'] for x in res['choices']])
return res
except Exception as e:
_logger.warning("Get Response Json failed: %s", e)
else:
pdata = {
"model": self.ai_model,
@@ -165,12 +187,11 @@ GPT-3 A set of models that can understand and generate natural language
res = response.json()
if 'choices' in res:
res = '\n'.join([x['text'] for x in res['choices']])
res = self.filter_sensitive_words(res)
return res
return "获取结果超时,请重新跟我聊聊。"
def get_azure(self, data, partner_name='odoo', *args):
def get_azure(self, data, sender_id, answer_id, *args):
self.ensure_one()
# only for azure
openai.api_type = self.provider
@@ -196,13 +217,11 @@ GPT-3 A set of models that can understand and generate natural language
if 'choices' in response:
res = response['choices'][0]['text'].replace(' .', '.').strip()
res = self.filter_sensitive_words(res)
return res
else:
_logger.warning('=====================azure output data: %s' % response)
return _('Azure no response')
@api.onchange('provider')
def _onchange_provider(self):
if self.provider == 'openai':
@@ -216,7 +235,9 @@ GPT-3 A set of models that can understand and generate natural language
s = self.sensitive_words
if s:
search.SetKeywords(s.split('\n'))
data = search.Replace(text=data)
else:
search.SetKeywords([])
data = search.Replace(text=data)
return data
else:
return data

View File

@@ -1197,7 +1197,7 @@ WG
清华同方
毛江独裁
妹妹被操的淫水直流
拉登
本拉登
奶头
99BBS
嫩穴美女挖嫩穴淫女嫩穴俱乐部
@@ -1678,7 +1678,6 @@ fuck新手指导员
骚妇掰B
超级乐者
战牌
ur
轮大
江湖 淫娘
yuming
@@ -1727,7 +1726,6 @@ sb
诛仙
毛信息产业部
毛四川独立
ri
再奸
法惀功
發@淪
@@ -3699,7 +3697,7 @@ fuck新闻管制
piss
和两勇男玩39P
rfa
拉登
本拉登
毛meimei黄站
米开朗基罗
温暖湿润的感觉笼罩龟头周围
@@ -3741,7 +3739,7 @@ mo li bao bei
粉红的的奶頭粉嫩的阴唇
香港淫穴
網捷信
谢中之
龟头挤进了姐姐的小穴
花园bt亚洲激情区
@@ -7731,7 +7729,7 @@ Priston Tale
soma
K他命
李文斌
卓奧
奥运
新诗年鉴

View File

@@ -45,7 +45,9 @@ class Channel(models.Model):
return '\n'.join(prompt[::-1])
def get_ai(self, ai, prompt, partner_name, channel, user_id, message):
res = ai.get_ai(prompt, partner_name)
sender_id = message.create_uid.partner_id
answer_id = user_id.partner_id
res = ai.get_ai(prompt, sender_id, answer_id)
if res:
res = res.replace('\n', '<br/>')
channel.with_user(user_id).message_post(body=res, message_type='comment', subtype_xmlid='mail.mt_comment', parent_id=message.id)

View File

@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from odoo import fields, models, api, _
from .lib.WordsSearch import WordsSearch
class MailThread(models.AbstractModel):
_inherit = "mail.thread"
@api.returns('mail.message', lambda value: value.id)
def message_post(self, **kwargs):
self.ensure_one()
search = WordsSearch()
search.SetKeywords([])
body = kwargs.get('body', False)
body = search.Replace(text=body)
kwargs.update({'body': body})
return super(MailThread, self).message_post(**kwargs)

View File

@@ -14,3 +14,13 @@ class ResUsers(models.Model):
], string='Allowed Conversation Mode', default='all', ondelete='set default')
gpt_wl_users = fields.Many2many('res.users', 'res_users_res_users_rel', 'robot_id', 'user_id', string='Allowed Users', domain="[('id', '!=', id)]")
gpt_demo_time = fields.Integer('Default Demo Time', default=0)
first_ask_time = fields.Datetime('First Ask Time')
service_start_date = fields.Datetime('Service Start Date')
service_end_date = fields.Datetime('Service End Date')
used_number = fields.Integer('Number of Used')
max_number = fields.Integer('Max Number of Call')
human_prompt_tokens = fields.Integer('Human Prompt Tokens')
ai_completion_tokens = fields.Integer('AI Completion Tokens')
tokens_total = fields.Integer('Total Tokens')

View File

@@ -15,6 +15,18 @@
<field name="gpt_demo_time"/>
</group>
</group>
<group>
<group string="Usage">
<field name="first_ask_time"/>
<field name="service_start_date"/>
<field name="service_end_date"/>
<field name="used_number"/>
<field name="max_number"/>
<field name="human_prompt_tokens"/>
<field name="ai_completion_tokens"/>
<field name="tokens_total"/>
</group>
</group>
</page>
</xpath>
</field>