File size: 1,922 Bytes
aad58a2
 
 
 
 
 
 
 
 
 
 
35e6a4d
 
8b3a670
4723a07
 
 
aad58a2
 
 
 
 
 
ba1ca3f
aad58a2
 
 
23c61db
4723a07
aad58a2
23c61db
 
 
 
 
aad58a2
4b29724
62193ce
aad58a2
 
 
4723a07
 
 
 
aad58a2
 
 
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
import gradio as gr
import os
from openai import OpenAI
import time

# Initialize the OpenAI Client
client = OpenAI(
    api_key=os.environ.get("RUNPOD_API_KEY"),
    base_url="https://api.runpod.ai/v2/vllm-k0g4c60zor9xuu/openai/v1",
)

def runpod_chat(question, history=None):
    if history is None:
        history = []  # Ensure history starts as an empty list if none is provided
    # Add the role description at the beginning of the session
    if not history:
        history.append({"role": "system", "content": "You are a history assistant, that provides the best possible answers to any historical questions asked about American History. Be helpful and specific, providing any detailed nuance needed to have a full understanding of the question."})
    history.append({"role": "user", "content": question})

    response_stream = client.chat.completions.create(
        model="ambrosfitz/llama-3-history",
        messages=history,
        temperature=0,
        max_tokens=150,
        stream=True,
    )
    
    # Stream the response and accumulate full response before displaying
    full_response = "HistoryBot: "
    for message in response_stream:
        part = message.choices[0].delta.content if message.choices[0].delta.content is not None else ""
        full_response += part

    # Append the full response to history once complete
    history.append({"role": "assistant", "content": full_response})

    return full_response, history  # Return full response and updated history to maintain state

# Set up the Gradio interface
iface = gr.Interface(
    fn=runpod_chat,
    inputs=[gr.State(), gr.Textbox(label="Enter your question:")],
    outputs=[gr.Textbox(label="Responses"), gr.State()],
    title="HistoryBot Chat",
    description="Interact with HistoryBot, a specialized assistant for American History. Ask any historical questions to get detailed and nuanced answers."
)

iface.launch()