diff --git a/app_chatgpt/__manifest__.py b/app_chatgpt/__manifest__.py index b4833787..6942c088 100644 --- a/app_chatgpt/__manifest__.py +++ b/app_chatgpt/__manifest__.py @@ -50,6 +50,7 @@ ], 'data': [ 'security/ir.model.access.csv', + 'security/ir_rules.xml', 'data/mail_channel_data.xml', 'data/ai_robot_data.xml', 'data/user_partner_data.xml', diff --git a/app_chatgpt/models/ai_robot.py b/app_chatgpt/models/ai_robot.py index 5c5de645..43c939e4 100644 --- a/app_chatgpt/models/ai_robot.py +++ b/app_chatgpt/models/ai_robot.py @@ -149,7 +149,7 @@ GPT-3 A set of models that can understand and generate natural language content = json.loads(json.dumps(res['choices'][0]['message']['content'])) data = content.replace(' .', '.').strip() answer_user = answer_id.mapped('user_ids')[:1] - if answer_user.gpt_policy == 'limit' and usage: + if usage: prompt_tokens = usage['prompt_tokens'] completion_tokens = usage['completion_tokens'] total_tokens = usage['total_tokens'] @@ -159,6 +159,7 @@ GPT-3 A set of models that can understand and generate natural language if not ai_use: ai_use.create({ 'name': author_id.id, + 'ai_user_id': answer_user.id, 'human_prompt_tokens': prompt_tokens, 'ai_completion_tokens': completion_tokens, 'tokens_total': total_tokens, diff --git a/app_chatgpt/models/mail_channel.py b/app_chatgpt/models/mail_channel.py index 80d709f7..60521ad1 100644 --- a/app_chatgpt/models/mail_channel.py +++ b/app_chatgpt/models/mail_channel.py @@ -39,8 +39,8 @@ class Channel(models.Model): ai_msg_list = message_model.with_context(tz='UTC').search(domain, order="id desc", limit=chat_count) for ai_msg in ai_msg_list: # 判断这个 ai_msg 是不是ai发,有才 insert。 判断 user_msg 是不是 user发的,有才 insert - user_msg = ai_msg.parent_id - if ai_msg.author_id.gpt_id: + user_msg = ai_msg.parent_id.sudo() + if ai_msg.author_id.sudo().gpt_id: ai_content = str(ai_msg.body).replace("
", "").replace("
", "").replace("", "") context_history.insert(0, { 'role': 'assistant', @@ -74,7 +74,7 @@ class Channel(models.Model): answer_id = self.env['res.partner'] user_id = self.env['res.users'] author_id = msg_vals.get('author_id') - ai = self.env['ai.robot'] + ai = self.env['ai.robot'].sudo() channel = self.env['mail.channel'] channel_type = self.channel_type messages = [] @@ -86,13 +86,13 @@ class Channel(models.Model): if channel_type == 'chat': channel_partner_ids = self.channel_partner_ids answer_id = channel_partner_ids - message.author_id - user_id = answer_id.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1] + user_id = answer_id.mapped('user_ids').sudo().filtered(lambda r: r.gpt_id)[:1] if user_id and answer_id.gpt_id: gpt_policy = user_id.gpt_policy gpt_wl_partners = user_id.gpt_wl_partners is_allow = message.author_id.id in gpt_wl_partners.ids if gpt_policy == 'all' or (gpt_policy == 'limit' and is_allow): - ai = answer_id.gpt_id + ai = answer_id.sudo().gpt_id elif channel_type in ['group', 'channel']: # partner_ids = @ ids @@ -101,10 +101,10 @@ class Channel(models.Model): # 常规群聊 @ partners = self.env['res.partner'].search([('id', 'in', partner_ids)]) # user_id = user, who has binded gpt robot - user_id = partners.mapped('user_ids').filtered(lambda r: r.gpt_id)[:1] + user_id = partners.mapped('user_ids').sudo().filtered(lambda r: r.gpt_id)[:1] elif message.body == _('