| import gradio as gr
|
| import requests
|
|
|
|
|
| BASE_URL = "http://localhost:1234/api/v0"
|
|
|
|
|
| def chat_with_lmstudio(messages):
|
| url = f"{BASE_URL}/chat/completions"
|
| payload = {
|
| "model": "granite-3.0-2b-instruct",
|
| "messages": messages,
|
| "temperature": 0.7,
|
| "max_tokens": 1024,
|
| "stream": False
|
| }
|
| response = requests.post(url, json=payload)
|
| response.raise_for_status()
|
| response_data = response.json()
|
| return response_data['choices'][0]['message']['content']
|
|
|
|
|
| def get_text_completion(prompt):
|
| url = f"{BASE_URL}/completions"
|
| payload = {
|
| "model": "granite-3.0-2b-instruct",
|
| "prompt": prompt,
|
| "temperature": 0.7,
|
| "max_tokens": 100,
|
| "stream": False
|
| }
|
| response = requests.post(url, json=payload)
|
| response.raise_for_status()
|
| response_data = response.json()
|
| return response_data['choices'][0]['text']
|
|
|
|
|
| def get_text_embedding(text):
|
| url = f"{BASE_URL}/embeddings"
|
| payload = {
|
| "model": "text-embedding-nomic-embed-text-v1.5",
|
| "input": text
|
| }
|
| response = requests.post(url, json=payload)
|
| response.raise_for_status()
|
| response_data = response.json()
|
| return response_data['data'][0]['embedding']
|
|
|
|
|
| def gradio_chat_interface():
|
| def chat_interface(user_input, history):
|
|
|
| messages = []
|
| for user_msg, assistant_msg in history:
|
| messages.append({"role": "user", "content": user_msg})
|
| messages.append({"role": "assistant", "content": assistant_msg})
|
| messages.append({"role": "user", "content": user_input})
|
|
|
|
|
| response = chat_with_lmstudio(messages)
|
|
|
|
|
| history.append((user_input, response))
|
| return history, history
|
|
|
| chat_interface = gr.ChatInterface(chat_interface, type='messages')
|
| chat_interface.launch(share=True)
|
|
|
|
|
| def gradio_text_completion():
|
| gr.Interface(
|
| fn=get_text_completion,
|
| inputs="text",
|
| outputs="text",
|
| title="Text Completion with LM Studio"
|
| ).launch(share=True)
|
|
|
|
|
| def gradio_text_embedding():
|
| gr.Interface(
|
| fn=get_text_embedding,
|
| inputs="text",
|
| outputs="text",
|
| title="Text Embedding with LM Studio"
|
| ).launch(share=True)
|
|
|
|
|
| def main():
|
| with gr.Blocks() as demo:
|
| gr.Markdown("""
|
| # LM Studio API Interface
|
| Choose which function you want to use with LM Studio:
|
| """)
|
|
|
| with gr.Row():
|
| gr.Button("Chat with Model").click(gradio_chat_interface)
|
| gr.Button("Text Completion").click(gradio_text_completion)
|
| gr.Button("Text Embedding").click(gradio_text_embedding)
|
|
|
| demo.launch(share=True)
|
|
|
| if __name__ == "__main__":
|
| main()
|
|
|