File size: 4,277 Bytes
fa7c624 2fdbea5 88bd71c 7670c72 eb6ebad fa7c624 68c8ae9 fa7c624 92ce7a1 fa7c624 dd490db fa7c624 ecac535 35cbe60 ecac535 35cbe60 ecac535 d6a6e5c 099f21e d6a6e5c 2d4458e d6a6e5c a84885f 1686056 a84885f 1686056 35cbe60 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
import os
import streamlit as st
import requests
import json
import math
def get_completion_from_openai(prompt, max_tokens = None):
url = os.getenv('OPENAI_COMPLETION_URL')
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + st.secrets["OPENAI_TOKEN"],
}
response = requests.post(url,
json={
"model": os.getenv('OPENAI_MODEL'),
"max_tokens": max_tokens,
"messages": [
{
"role": "user",
"content": prompt
}
]
},
headers=headers,
stream=False,
)
try:
return response.json()['choices'][0]['message']['content']
except:
print(response.json())
return "Произошла ошибка"
def process_transcribation_with_assistant(prompt, transcript):
baseUrl = os.getenv('OPENAI_BASE_URL')
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + st.secrets["OPENAI_TOKEN"],
"OpenAI-Beta": "assistants=v2",
}
number_of_runs = math.ceil(len(transcript) / (4 * 4096))
output_text = ''
thread_response = requests.post(baseUrl + '/threads', json={}, headers=headers)
thread_id = thread_response.json()['id']
message_response = requests.post(baseUrl + '/threads/' + thread_id + '/messages',
json={"role" : "user", "content": prompt + transcript},
headers=headers)
run_response = requests.post(baseUrl + '/threads/' + thread_id + '/runs',
json={
"assistant_id": st.secrets["OPENAI_ASSISTANT_ID"],
"stream": True
},
headers=headers,
stream=True)
st.write("Результат обработки:")
text_container = st.empty()
output_text = ''
event_name = ""
for line in run_response.iter_lines(decode_unicode=True):
if line:
if line.startswith("event:"):
event_name = line.split(":")[1].strip()
if event_name == 'done':
break
elif line.startswith("data:") and event_name == 'thread.message.delta':
event_data = json.loads(line.split(":", 1)[1].strip())
output_text += event_data['delta']['content'][0]['text']['value']
text_container.text(output_text)
for i in range(number_of_runs - 1):
message_response = requests.post(baseUrl + '/threads/' + thread_id + '/messages',
json={"role" : "user", "content": "Продолжай работать на текущей задачей"},
headers=headers)
run_response = requests.post(baseUrl + '/threads/' + thread_id + '/runs',
json={
"assistant_id": st.secrets["OPENAI_ASSISTANT_ID"],
"stream": True
},
headers=headers,
stream=True)
event_name = ""
response = ''
for line in run_response.iter_lines(decode_unicode=True):
if line:
if line.startswith("event:"):
event_name = line.split(":")[1].strip()
if event_name == 'done':
break
elif line.startswith("data:") and event_name == 'thread.message.delta':
event_data = json.loads(line.split(":", 1)[1].strip())
output_text += event_data['delta']['content'][0]['text']['value']
text_container.text(output_text)
return output_text
|