import time import gradio as gr import os import json import requests #Streaming endpoint API_URL = os.getenv("API_URL") + "/generate_stream" def predict(inputs, top_p, temperature, top_k, repetition_penalty, history=[]): if not inputs.startswith("User: "): inputs = "User: " + inputs + "\n" payload = { "inputs": inputs, #"My name is Jane and I", "parameters": { "details": True, "do_sample": True, "max_new_tokens": 100, "repetition_penalty": repetition_penalty, #1.03, "seed": 0, "temperature": temperature, #0.5, "top_k": top_k, #10, "top_p": top_p #0.95 } } headers = { 'accept': 'text/event-stream', 'Content-Type': 'application/json' } history.append(inputs) # make a POST request to the API endpoint using the requests.post method, passing in stream=True response = requests.post(API_URL, headers=headers, json=payload, stream=True) token_counter = 0 partial_words = "" # loop over the response data using the iter_lines method of the response object for chunk in response.iter_lines(): # check whether each line is non-empty if chunk: # decode each line as response data is in bytes partial_words = partial_words + json.loads(chunk.decode()[5:])['token']['text'] if token_counter == 0: history.append(" " + partial_words) else: history[-1] = partial_words chat = [(history[i], history[i + 1]) for i in range(0, len(history) - 1, 2) ] # convert to tuples of list token_counter+=1 yield chat, history #{chatbot: chat, state: history} #[(partial_words, history)] title = """