このコードは、GPT-4 API、CHATGPT API、およびinstantGPT(GPT-3.5。)モデルとRreatrlit-Appでストリーミングの使用を実証することです。
このアプローチでは、OpenAIおよびTimeライブラリのみを使用し、印刷を使用してストリームを再印刷します(End = ''、Flush = True):
!p ip install - - upgrade openai
import openai
import time
openai . api_key = user_secrets . get_secret ( "OPENAI_API_KEY" )
startime = time . time ()免責事項:生産使用量のストリーミングの欠点は、Appropiate使用ポリシーの制御です:https://beta.openai.com/docs/usage-guidelinesは、各アプリケーションについて事前にレビューする必要があります。
ファイルStreams.ipnyBの最初の部分を実行します。
### 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 )ユーザーの入力を挿入してEnterを押した後、出力が印刷されているのを見る必要があります。

ファイルstreams.ipnybの第2部を実行します。ユーザー入力を追加すると、以下に似ています。
### 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 )
ファイルストリームを実行します。pnyb第3部。ユーザー入力を追加すると、以下に似ています。
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 )
動作する「app_streamlit.py」-fileを追加します。これは、「要件」でリポジトリにフォークすることができます。

高度な設定で、形式を使用してOpenAI_API_KEY-Variableを追加します。
OPENAI_API_KEY = "INSERT HERE YOUR KEY" ライセンスに従って、自由にフォークし、さらにコードを改善してください。たとえば、CHATMLをさらに改善して、フローが目的の「システム」ルールに従うことを確認できます。この基本的なスクリプトを非常に一般的にするために、これらを空にしたままにしました。ストリーミング、CHATML:システム、アシスタント、ユーザーの役割、CHATGPT API入門書のガイドに関連するメディアのストリーミング応答に関するCHATGPT APIに固有の記事を確認することをお勧めします。