mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
app_chatgpt: update 17.0 using openai==1.14.3
This commit is contained in:
@@ -1,9 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# import openai.openai_object
|
from openai import OpenAI
|
||||||
import openai
|
from openai import AzureOpenAI
|
||||||
import requests, json
|
import requests, json
|
||||||
import openai
|
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
from odoo import api, fields, models, modules, tools, _
|
from odoo import api, fields, models, modules, tools, _
|
||||||
@@ -174,7 +173,8 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
|
|
||||||
def get_ai_post(self, res, author_id=False, answer_id=False, param={}):
|
def get_ai_post(self, res, author_id=False, answer_id=False, param={}):
|
||||||
# hook,高级版要替代
|
# hook,高级版要替代
|
||||||
if res and author_id and type(res) == openai.Completion or isinstance(res, list) or isinstance(res, dict):
|
if res and author_id or isinstance(res, list) or isinstance(res, dict):
|
||||||
|
# TODO: and type(res) == openai.Completion
|
||||||
# 返回是个对象,那么就是ai
|
# 返回是个对象,那么就是ai
|
||||||
# if isinstance(res, dict):
|
# if isinstance(res, dict):
|
||||||
if self.provider == 'openai':
|
if self.provider == 'openai':
|
||||||
@@ -256,8 +256,8 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
# 以下处理 open ai
|
# 以下处理 open ai
|
||||||
if self.ai_model in ['gpt-3.5-turbo', 'gpt-3.5-turbo-0301']:
|
if self.ai_model in ['gpt-3.5-turbo', 'gpt-3.5-turbo-0301']:
|
||||||
# 基本与 azure 同,要处理 api_base
|
# 基本与 azure 同,要处理 api_base
|
||||||
openai.api_key = self.openapi_api_key
|
# openai.api_key = self.openapi_api_key
|
||||||
openai.api_base = o_url.replace('/chat/completions', '')
|
# openai.api_base = o_url.replace('/chat/completions', '')
|
||||||
if isinstance(data, list):
|
if isinstance(data, list):
|
||||||
messages = data
|
messages = data
|
||||||
else:
|
else:
|
||||||
@@ -324,7 +324,8 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
"presence_penalty": 0.1,
|
"presence_penalty": 0.1,
|
||||||
"stop": stop
|
"stop": stop
|
||||||
}
|
}
|
||||||
response = openai.ChatCompletion.create(
|
client = OpenAI(api_key=self.openapi_api_key)
|
||||||
|
response = client.chat.completions.create(
|
||||||
model=self.ai_model,
|
model=self.ai_model,
|
||||||
messages=data
|
messages=data
|
||||||
)
|
)
|
||||||
@@ -339,14 +340,12 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
def get_azure(self, data, author_id, answer_id, param={}):
|
def get_azure(self, data, author_id, answer_id, param={}):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
# only for azure
|
# only for azure
|
||||||
openai.api_type = self.provider
|
|
||||||
if not self.endpoint:
|
if not self.endpoint:
|
||||||
raise UserError(_("Please Set your AI robot's endpoint first."))
|
raise UserError(_("Please Set your AI robot's endpoint first."))
|
||||||
openai.api_base = self.endpoint
|
|
||||||
if not self.api_version:
|
if not self.api_version:
|
||||||
raise UserError(_("Please Set your AI robot's API Version first."))
|
raise UserError(_("Please Set your AI robot's API Version first."))
|
||||||
openai.api_version = self.api_version
|
|
||||||
openai.api_key = self.openapi_api_key
|
|
||||||
if self.stop:
|
if self.stop:
|
||||||
stop = self.stop.split(',')
|
stop = self.stop.split(',')
|
||||||
else:
|
else:
|
||||||
@@ -370,8 +369,15 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
if sys_content:
|
if sys_content:
|
||||||
messages.insert(0, sys_content)
|
messages.insert(0, sys_content)
|
||||||
# 暂时不变
|
# 暂时不变
|
||||||
response = openai.ChatCompletion.create(
|
|
||||||
engine=self.engine,
|
client = AzureOpenAI(
|
||||||
|
api_version=self.api_version,
|
||||||
|
azure_endpoint=self.endpoint,
|
||||||
|
api_key=self.openapi_api_key,
|
||||||
|
timeout=request_timeout
|
||||||
|
)
|
||||||
|
response = client.chat.completions.create(
|
||||||
|
model=self.engine,
|
||||||
messages=messages,
|
messages=messages,
|
||||||
# 返回的回答数量
|
# 返回的回答数量
|
||||||
n=1,
|
n=1,
|
||||||
@@ -381,10 +387,10 @@ GPT-3 A set of models that can understand and generate natural language
|
|||||||
frequency_penalty=frequency_penalty,
|
frequency_penalty=frequency_penalty,
|
||||||
presence_penalty=presence_penalty,
|
presence_penalty=presence_penalty,
|
||||||
stop=None,
|
stop=None,
|
||||||
request_timeout=request_timeout,
|
|
||||||
)
|
)
|
||||||
if 'choices' in response:
|
res = response.model_dump()
|
||||||
return response
|
if 'choices' in res:
|
||||||
|
return res
|
||||||
else:
|
else:
|
||||||
_logger.warning('=====================azure output data: %s' % response.json())
|
_logger.warning('=====================azure output data: %s' % response.json())
|
||||||
return _("Response Timeout, please speak again.")
|
return _("Response Timeout, please speak again.")
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<img class="oe_demo oe_screenshot img img-fluid" src="demo02.jpg">
|
<img class="oe_demo oe_screenshot img img-fluid" src="demo02.jpg">
|
||||||
</div>
|
</div>
|
||||||
<h3>Lastest update: v16.23.03.16</h3>
|
<h3>Lastest update: v17.24.03.28</h3>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<img class="oe_demo oe_screenshot img img-fluid" style="max-height: 100%;" src="banner.png">
|
<img class="oe_demo oe_screenshot img img-fluid" style="max-height: 100%;" src="banner.png">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user