You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.4 KiB
91 lines
3.4 KiB
# -*- coding: utf-8 -*-
|
|
#############################################################################
|
|
#
|
|
# Cybrosys Technologies Pvt. Ltd.
|
|
#
|
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
|
#
|
|
# You can modify it under the terms of the GNU AFFERO
|
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
|
#
|
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
# (AGPL v3) along with this program.
|
|
# If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
#############################################################################
|
|
from os import remove
|
|
from openai import OpenAI
|
|
from odoo import api, models
|
|
|
|
|
|
class ChatGPTOdoo(models.Model):
|
|
_name = 'open.chatgpt'
|
|
_description = 'Open ChatGPT'
|
|
|
|
@api.model
|
|
def get_response(self, message):
|
|
"""Function for getting response based on the message."""
|
|
api_key = self.env['ir.config_parameter'].sudo().get_param('chatgpt_odoo_connector.api_key')
|
|
client = OpenAI(api_key=api_key)
|
|
try:
|
|
chat_completion = client.chat.completions.create(
|
|
messages=[
|
|
{
|
|
"role": "user",
|
|
"content": message,
|
|
}
|
|
],
|
|
model="gpt-3.5-turbo",
|
|
)
|
|
except Exception as e:
|
|
message = str(e).split("'message':")[1]
|
|
error_message = message.split(", 'type':")[0]
|
|
return error_message
|
|
return chat_completion.choices[0].message.content
|
|
|
|
@api.model
|
|
def edit_content(self, message, message_type):
|
|
"""Function for editing(shortening, lengthening, and rephrasing) the description """
|
|
api_key = self.env['ir.config_parameter'].sudo().get_param(
|
|
'chatgpt_odoo_connector.api_key')
|
|
client = OpenAI(api_key=api_key)
|
|
try:
|
|
chat_completion = client.chat.completions.create(
|
|
messages=[
|
|
{
|
|
"role": "user",
|
|
"content": f"{message_type}: {message}",
|
|
}
|
|
],
|
|
model="gpt-3.5-turbo",
|
|
)
|
|
except Exception as e:
|
|
message = str(e).split("'message':")[1]
|
|
error_message = message.split(", 'type':")[0]
|
|
return error_message
|
|
return chat_completion.choices[0].message.content
|
|
|
|
@api.model
|
|
def convert_to_text(self, audio_path):
|
|
""" Function for converting the audio from the file into text using AI.
|
|
It returns the text.
|
|
"""
|
|
api_key = self.env['ir.config_parameter'].sudo().get_param(
|
|
'chatgpt_odoo_connector.api_key')
|
|
client = OpenAI(api_key=api_key)
|
|
try:
|
|
audio_file = open(audio_path, "rb")
|
|
transcription = client.audio.transcriptions.create(
|
|
model="whisper-1",
|
|
file=audio_file
|
|
)
|
|
remove(audio_path)
|
|
except Exception as e:
|
|
return f'Error: {str(e)}'
|
|
return transcription.text
|
|
|