Der Code soll die Verwendung von Streaming mit GPT-4-API, Chatgpt-API und InstructGPT (GPT-3.5.) Models & Streamlit-App demonstrieren.
Der Ansatz verwendet nur OpenAI- und Zeitbibliotheken und drückt die Streams mit Print (end = '', Flush = True) erneut aus:
!p ip install - - upgrade openai
import openai
import time
openai . api_key = user_secrets . get_secret ( "OPENAI_API_KEY" )
startime = time . time ()Haftungsausschluss: Der Nachteil des Streaming in der Produktionsstation ist die Kontrolle der anerkannten Nutzungsrichtlinie: https://beta.openai.com/docs/usage-guidelines, die für jede Bewerbung im Voraus überprüft werden sollten. Ich empfehle daher, diese Richtlinie vor der Entscheidung über die Verwendung von Streaming zu schauen.
Führen Sie den ersten Teil der Datei Streams.ipnyb aus.
### STREAM GPT-4 API RESPONSES
delay_time = 0.01 # faster
max_response_length = 8000
answer = ''
# ASK QUESTION
prompt = input ( "Ask a question: " )
start_time = time . time ()
response = openai . ChatCompletion . create (
# GPT-4 API REQQUEST
model = 'gpt-4' ,
messages = [
{ 'role' : 'user' , 'content' : f' { prompt } ' }
],
max_tokens = max_response_length ,
temperature = 0 ,
stream = True , # this time, we set stream=True
)
for event in response :
# STREAM THE ANSWER
print ( answer , end = '' , flush = True ) # Print the response
# RETRIEVE THE TEXT FROM THE RESPONSE
event_time = time . time () - start_time # CALCULATE TIME DELAY BY THE EVENT
event_text = event [ 'choices' ][ 0 ][ 'delta' ] # EVENT DELTA RESPONSE
answer = event_text . get ( 'content' , '' ) # RETRIEVE CONTENT
time . sleep ( delay_time )Nach dem Einfügen der Benutzereingabe und der Drücke der Eingabetaste sollten Sie den ausgedruckten Ausgang sehen:

Führen Sie den zweiten Teil der Datei Streams.ipnyb aus. Benutzereingabe hinzufügen, und Sie sollten ähnlich wie unten sehen:
### STREAM CHATGPT API RESPONSES
delay_time = 0.01 # faster
max_response_length = 200
answer = ''
# ASK QUESTION
prompt = input ( "Ask a question: " )
start_time = time . time ()
response = openai . ChatCompletion . create (
# CHATPG GPT API REQQUEST
model = 'gpt-3.5-turbo' ,
messages = [
{ 'role' : 'user' , 'content' : f' { prompt } ' }
],
max_tokens = max_response_length ,
temperature = 0 ,
stream = True , # this time, we set stream=True
)
for event in response :
# STREAM THE ANSWER
print ( answer , end = '' , flush = True ) # Print the response
# RETRIEVE THE TEXT FROM THE RESPONSE
event_time = time . time () - start_time # CALCULATE TIME DELAY BY THE EVENT
event_text = event [ 'choices' ][ 0 ][ 'delta' ] # EVENT DELTA RESPONSE
answer = event_text . get ( 'content' , '' ) # RETRIEVE CONTENT
time . sleep ( delay_time )
Führen Sie den Dritten Teil der Datei Streams.pnyb aus. Benutzereingabe hinzufügen, und Sie sollten ähnlich wie unten sehen:
collected_events = []
completion_text = []
speed = 0.05 #smaller is faster
max_response_length = 200
start_time = time . time ()
prompt = input ( "Ask a question: " )
# Generate Answer
response = openai . Completion . create (
model = 'text-davinci-003' ,
prompt = prompt ,
max_tokens = max_response_length ,
temperature = 0 ,
stream = True , # this time, we set stream=True
)
# Stream Answer
for event in response :
event_time = time . time () - start_time # calculate the time delay of the event
collected_events . append ( event ) # save the event response
event_text = event [ 'choices' ][ 0 ][ 'text' ] # extract the text
completion_text += event_text # append the text
time . sleep ( speed )
print ( f" { event_text } " , end = "" , flush = True )
Ich füge eine funktionierende "app_streamlit.py" -File hinzu, die Sie mit dem "Anforderungen.txt" in Ihr Repository gaben und es in Streamlit bereitstellen können.

Fügen Sie in den erweiterten Einstellungen das OpenAI_API_KEY-Variable mit Format hinzu:
OPENAI_API_KEY = "INSERT HERE YOUR KEY" Fühlen Sie sich frei, den Code gemäß der Lizenz zu verbessern. Sie können beispielsweise die CHATML weiter verbessern, um sicherzustellen, dass der Fluss den gewünschten "System" -Regeln folgt. Ich habe diese jetzt leer gelassen, um dieses grundlegende Skript sehr allgemein zu machen. Ich empfehle, meine Artikel, die spezifisch für ChatGPT -API über Streaming -Antworten in Medium im Zusammenhang mit Streaming, ChatML: Leitakten mit System-, Assistenten- und Benutzerrollen und Chatgpt -API -Einführung Tutorial zu überprüfen sind.