Skip to content
Snippets Groups Projects
Commit f340208b authored by Aleksander Einarsen's avatar Aleksander Einarsen
Browse files

#21 Api /llama/{prompt} returns ollama text

parent 1fcf13dc
No related branches found
No related tags found
No related merge requests found
package main
import (
"fmt"
"log"
"net/http"
"os/exec"
"regexp"
"runtime"
)
const prompt = "Hello!"
func main() {
runHandler()
}
var cmd = getOllamaCmd(prompt)
func removeANSI(s string) string {
re := regexp.MustCompile(`\x1b\[[0-?]*[ -/]*[@-~]`)
return re.ReplaceAllString(s, "")
}
func promptHandler(w http.ResponseWriter, r *http.Request) {
// get the value of the "prompt" query parameter
prompt := r.PathValue("prompt")
log.Println("Prompt: ", prompt)
// Run ollama prompt
var cmd = getOllamaCmd(prompt)
output, err := cmd.CombinedOutput()
log.Printf("Output: %s, Error: %v", output, err)
finalOutput := removeANSI(string(output))
finalOutput = fmt.Sprintf("%s", finalOutput)
//outputString := string(output)
//_, err = fmt.Fprintln(w, output)
_, err = w.Write([]byte(finalOutput))
if err != nil {
log.Println("Error writing response: ", err)
return
}
}
func runHandler() {
http.HandleFunc("/llama/{prompt}", promptHandler)
log.Println("Starting server on :8080")
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
_, err := w.Write([]byte("To ask the llama a question, make a GET request to /llama/{prompt}"))
if err != nil {
log.Println("Error writing response: ", err)
return
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
func getCommand() *exec.Cmd {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment