mirror of
https://github.com/danielmiessler/fabric
synced 2024-11-10 07:10:31 +00:00
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from openai import OpenAI, chat
|
|
from flask import jsonify, Blueprint
|
|
import os
|
|
from flask_socketio import send, emit
|
|
|
|
current_directory = os.path.dirname(os.path.abspath(__file__))
|
|
config_directory = os.path.expanduser("~/.config/fabric")
|
|
api_key_file = os.path.join(config_directory, ".env")
|
|
with open(api_key_file, "r") as f:
|
|
apiKey = f.read().split("=")[1]
|
|
client = OpenAI(api_key=apiKey)
|
|
bp = Blueprint('chatgpt', __name__)
|
|
|
|
|
|
def sendMessage(system: str, input_data: str, user=''):
|
|
system_message = {"role": "system", "content": system}
|
|
user_message = {"role": "user", "content": f"{user}\n{input_data}"}
|
|
messages = [system_message, user_message]
|
|
try:
|
|
response = client.chat.completions.create(
|
|
model="gpt-4-1106-preview",
|
|
messages=messages,
|
|
temperature=0.0,
|
|
top_p=1,
|
|
frequency_penalty=0.1,
|
|
presence_penalty=0.1
|
|
)
|
|
assistant_message = response.choices[0].message.content
|
|
return jsonify({"response": assistant_message})
|
|
except Exception as e:
|
|
return jsonify({"error": str(e)})
|
|
|
|
|
|
def streamMessage(input_data: str, wisdomFile: str):
|
|
# Similar logic as sendMessage but adapted for streaming
|
|
user_message = {"role": "user", "content": f"{input_data}"}
|
|
wisdom_File = os.path.join(
|
|
current_directory, wisdomFile)
|
|
with open(wisdom_File, "r") as f:
|
|
system = f.read()
|
|
system_message = {"role": "system", "content": system}
|
|
messages = [system_message, user_message]
|
|
try:
|
|
# Note: You need to modify the API call to support streaming
|
|
stream = client.chat.completions.create(
|
|
model="gpt-4-1106-preview",
|
|
messages=messages,
|
|
temperature=0.0,
|
|
top_p=1,
|
|
frequency_penalty=0.1,
|
|
presence_penalty=0.1,
|
|
stream=True
|
|
)
|
|
for chunk in stream:
|
|
if chunk.choices[0].delta.content is not None:
|
|
send(chunk.choices[0].delta.content, end="")
|
|
except Exception as e:
|
|
emit('error', {'data': str(e)})
|
|
|
|
|
|
if 1 == 1:
|
|
from app.chatgpt import routes
|