Spaces:
Paused
Paused
| import gradio as gr | |
| import requests | |
| import subprocess | |
| import time | |
| import json | |
| from ollama import chat | |
| from ollama import ChatResponse | |
| def start_ollama_server(): | |
| # Start Ollama server in the background | |
| print("Starting Ollama server...") | |
| subprocess.Popen(["ollama", "serve"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| time.sleep(5) # Give some time for the server to start | |
| # Pull the required model | |
| print("Pulling the required model...") | |
| subprocess.run(["ollama", "pull", "llama3.2:1b"], check=True) | |
| print("Pulling the required model...") | |
| subprocess.Popen(["ollama", "run", "llama3.2:1b"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| print("Ollama started model.") | |
| # Function to send a prompt to the Ollama server and return the response | |
| def ask_ollama(question): | |
| # url = "http://localhost:11434/api/generate" | |
| # headers = {"Content-Type": "application/json"} | |
| # data = { | |
| # "model": "llama3.1", | |
| # "prompt": prompt, | |
| # "format": "json", | |
| # "stream": False | |
| # } | |
| # try: | |
| # # Send the POST request to the API | |
| # response = requests.post(url, headers=headers, json=data) | |
| # response.raise_for_status() # Raise an exception for HTTP errors | |
| # result = response.json() # Parse the JSON response | |
| # | |
| # # Extract and clean the "response" field | |
| # actual_response = result.get("response", "").strip() | |
| # print(actual_response) | |
| # return actual_response if actual_response else "No response found" | |
| # except requests.exceptions.RequestException as e: | |
| # return f"Error: {str(e)}" | |
| prompt_template = f""" | |
| ### You are an expert in the subreddit r/AmItheAsshole. | |
| ### The task for you is to classify the given text content as YTA or NTA label and give an explanation for the same. | |
| ### The output format is as follows: | |
| "YTA" or "NTA", explanation for the label. | |
| ### Input Text : {question} | |
| """ | |
| response: ChatResponse = chat(model='llama3.2:1b', messages=[ | |
| { | |
| 'role': 'user', | |
| 'content': prompt_template, | |
| }, | |
| ]) | |
| print(response['message']['content']) | |
| # or access fields directly from the response object | |
| return response['message']['content'] | |
| # Gradio Interface | |
| def gradio_interface(prompt): | |
| return ask_ollama(prompt) | |
| # Build the Gradio app | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Ollama Server Interface") | |
| gr.Markdown("Ask questions and get responses from the Ollama server.") | |
| with gr.Row(): | |
| input_prompt = gr.Textbox(label="Enter your question", placeholder="Type your question here...") | |
| with gr.Row(): | |
| submit_button = gr.Button("Ask") | |
| with gr.Row(): | |
| output_response = gr.Textbox(label="Response", lines=10) | |
| submit_button.click(gradio_interface, inputs=input_prompt, outputs=output_response) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| start_ollama_server() | |
| demo.launch(server_name="0.0.0.0", server_port=7860, share=True) | |