El código es para demostrar el uso de la transmisión con API GPT-4, API CHATGPT e InstructGPT (GPT-3.5.) Modelos y APP.
El enfoque utiliza solo bibliotecas Operai y Time y vuelve a imprimir las transmisiones usando print (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 ()Descargo de responsabilidad: La desventaja de la transmisión en el uso de la producción es el control de la política de uso aprobado: https://beta.openai.com/docs/usage-guidelines, que debería revisarse de antemano para cada aplicación, por lo que sugiero que eche un vistazo a esta política antes de decidir usar la transmisión.
Ejecute las transmisiones de archivo. IPNYB Primera parte.
### 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 )Después de insertar la entrada del usuario y presionar Enter, debería ver la salida impresa:

Ejecute la segunda parte de la transmisión del archivo. Agregue la entrada del usuario y debería ver de manera similar a la siguiente:
### 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 )
Ejecute la transmisión del archivo. PNYB Tercera parte. Agregue la entrada del usuario y debería ver de manera similar a la siguiente:
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 )
Agrego un archivo "app_streamlit.py" que funciona, que puede desembolsar en su repositorio con el "requisitos.txt" e implementarlo en Streamlit.

En la configuración avanzada, agregue el OPERAI_API_KEY-Variable usando el formato:
OPENAI_API_KEY = "INSERT HERE YOUR KEY" Siéntase libre de bifurcar y mejorar aún más el código según la licencia. Por ejemplo, puede mejorar aún más el CHATML para garantizar que el flujo siga las reglas de "sistema" deseadas. Los dejé vacíos ahora para hacer que este script básico sea muy genérico. Recomiendo consultar mis artículos específicos para la API de ChatGPT sobre las respuestas de transmisión en medio relacionado con la transmisión, Chatml: indicaciones guía con el sistema, el asistente y los roles de usuario y el tutorial de introducción de la API de ChatGPT.