Scripts / lmstudio_gradio.py
Aborman's picture
Upload folder using huggingface_hub
542f845 verified
raw
history blame
3.67 kB
import gradio as gr
import requests
# Base URL for LM Studio REST API
BASE_URL = "http://localhost:1234/api/v0"
# Chat completions function
def chat_with_lmstudio(messages, model, temperature=0.7, max_tokens=150):
endpoint = f"{BASE_URL}/chat/completions"
payload = {
"model": model,
"messages": messages,
"temperature": temperature,
"max_tokens": max_tokens,
"stream": False
}
try:
response = requests.post(endpoint, json=payload)
response.raise_for_status()
data = response.json()
return data["choices"][0]["message"]["content"]
except requests.RequestException as e:
return f"Error: {str(e)}"
# Text completions function
def text_completion(prompt, model, temperature=0.7, max_tokens=150):
endpoint = f"{BASE_URL}/completions"
payload = {
"model": model,
"prompt": prompt,
"temperature": temperature,
"max_tokens": max_tokens,
"stream": False
}
try:
response = requests.post(endpoint, json=payload)
response.raise_for_status()
data = response.json()
return data["choices"][0]["text"]
except requests.RequestException as e:
return f"Error: {str(e)}"
# Embeddings function
def text_embedding(text, model):
endpoint = f"{BASE_URL}/embeddings"
payload = {
"model": model,
"input": text
}
try:
response = requests.post(endpoint, json=payload)
response.raise_for_status()
data = response.json()
return data["data"][0]["embedding"]
except requests.RequestException as e:
return f"Error: {str(e)}"
# Gradio Interface
def chat_interface(user_message, history, model="granite-3.0-2b-instruct"):
if history is None:
history = []
history.append({"role": "user", "content": user_message})
assistant_response = chat_with_lmstudio(history, model=model)
history.append({"role": "assistant", "content": assistant_response})
conversation = [(h["content"], history[i+1]["content"]) for i, h in enumerate(history[:-1]) if h["role"] == "user"]
return conversation, history
with gr.Blocks() as demo:
gr.Markdown("# LM Studio API Interface")
with gr.Tab("Chat with Model"):
chat_history = gr.State([])
chat_model = gr.Textbox(value="granite-3.0-2b-instruct", label="Model")
chatbot = gr.Chatbot()
msg = gr.Textbox(placeholder="Enter your message", label="User Input")
submit_btn = gr.Button("Send")
submit_btn.click(chat_interface, inputs=[msg, chat_history, chat_model], outputs=[chatbot, chat_history])
with gr.Tab("Text Completion"):
completion_prompt = gr.Textbox(placeholder="Enter a prompt for text completion", label="Prompt")
completion_model = gr.Textbox(value="granite-3.0-2b-instruct", label="Model")
completion_output = gr.Textbox(label="Completion")
generate_btn = gr.Button("Generate")
generate_btn.click(text_completion, inputs=[completion_prompt, completion_model], outputs=completion_output)
with gr.Tab("Text Embeddings"):
embedding_text = gr.Textbox(placeholder="Enter text for embeddings", label="Input Text")
embedding_model = gr.Textbox(value="text-embedding-nomic-embed-text-v1.5", label="Model")
embedding_output = gr.JSON(label="Embeddings")
embed_btn = gr.Button("Get Embeddings")
embed_btn.click(text_embedding, inputs=[embedding_text, embedding_model], outputs=embedding_output)
demo.launch(share=True)