File size: 3,670 Bytes
542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 542f845 007f371 |
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 84 85 86 87 88 89 90 91 92 93 94 |
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)
|