File size: 2,799 Bytes
47fcff2 79cade0 e630485 18d6e67 771f83c 2cfcbca 771f83c 79cade0 0c5007d e630485 79cade0 246199f 0cce7a0 79cade0 18d6e67 e630485 246199f 79cade0 d4c8596 e630485 2cfcbca e630485 d4c8596 e630485 2cfcbca 246199f 18d6e67 e630485 3ba965f 18d6e67 a604d22 b94dfba 246199f a604d22 47fcff2 3ba965f b94dfba 3ba965f 246199f 3ba965f 47fcff2 e630485 47fcff2 61abdf6 47fcff2 96700cc |
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 |
import gradio as gr
import os
import openai
import tenacity
import nest_asyncio
import asyncio
nest_asyncio.apply()
ACCESS_TOKEN = os.getenv("HF_TOKEN")
openai.api_key = ACCESS_TOKEN
# Retry logic with tenacity for handling API rate limits
@tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, min=4, max=10), stop=tenacity.stop_after_attempt(5))
async def respond(
message,
system_message,
max_tokens,
temperature,
top_p,
):
try:
print("Making request to OpenAI API...")
# Only use the system message and the current message for the response
messages = [{"role": "system", "content": system_message},
{"role": "user", "content": message}]
response = await openai.Completion.create(
model="text-davinci-003",
prompt=system_message + "\n" + message,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
)
print("Received response from OpenAI API...")
response_text = response.choices[0].text
print("Response text:", response_text)
return response_text
except openai.error.APIError as e:
print("APIError:", e)
return "Error occurred. Please try again."
except Exception as e:
print("Exception:", e)
return "Error occurred. Please try again."
# Gradio function to handle user input and response generation without history
def generate_response(message, system_message, max_tokens, temperature, top_p):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
response = loop.run_until_complete(respond(message, system_message, max_tokens, temperature, top_p))
return response
def launch_app():
try:
demo = gr.Blocks()
with demo:
gr.Markdown("# Chatbot")
message = gr.Textbox(label="Message")
system_message = gr.Textbox(label="System message")
max_tokens = gr.Slider(minimum=1, maximum=2048, value=2048, step=1, label="Max new tokens")
temperature = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature")
top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-P")
response = gr.Text(label="Response")
# Use the generate_response function without history
gr.Button("Generate Response").click(
generate_response,
inputs=[message, system_message, max_tokens, temperature, top_p],
outputs=[response],
show_progress=False,
)
demo.launch(show_error=True)
except KeyError as e:
print("Error:", e)
print("Please try again.")
if __name__ == "__main__":
launch_app() |