mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
Merge branch '16.0' of https://github.com/guohuadeng/app-odoo into 16.0
# Conflicts: # app_chatgpt/models/ai_robot.py
This commit is contained in:
@@ -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,12 +217,10 @@ 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):
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user