diff --git a/llama/main_automatic.go b/llama/main_automatic.go new file mode 100644 index 0000000000000000000000000000000000000000..a4b336500b8e5edddcbfc20292c1047d4173c44f --- /dev/null +++ b/llama/main_automatic.go @@ -0,0 +1,84 @@ +package main + +import ( + "fmt" + "io" + "llama/compiler" + displayindicator "llama/display-indicator" + "llama/extraction" + ollamaimplementation "llama/ollama-implementation" + "os" + "strings" +) + +func main() { + //reader := bufio.NewReader(os.Stdin) + var conversationContext []int // Variable to store conversation context + + //fmt.Print("Enter your prompt (or type 'exit' to quit): ") + //userPrompt, _ := reader.ReadString('\n') + //userPrompt = strings.TrimSpace(userPrompt) + promptText, err := os.Open("promptList.txt") + if err != nil { + fmt.Println("Error opening file", err) + } + + text, err := io.ReadAll(promptText) + if err != nil { + fmt.Println("Error reading file:", err) + return + } + + prompt := string(text) + + promptList := strings.Split(prompt, "\n") + + var userPrompt = "" + for i := range promptList { + fmt.Println(promptList[i]) + userPrompt = promptList[i] + + //if userPrompt == "exit" { + // fmt.Println("Exiting the program.") + // break + //} + + var modifiedPrompt = userPrompt + extraction.GoPrompt + + fmt.Println("Prompt received. Generating response...") + + // Start a go routine to display a waiting indicator while the response is being generated + done := make(chan bool) + go displayindicator.DisplayLoadingIndicator(done) + + // Generate response using Ollama API, passing the context + response, updatedContext, err := ollamaimplementation.GetOllamaResponse(modifiedPrompt, conversationContext) + + // Signal the waiting indicator to stop + done <- true + + if err != nil { + fmt.Println("Error generating response:", err) + continue + } + + // Update the conversation context with the response + conversationContext = updatedContext + //fmt.Println(updatedContext) + + generatedCode, _ := extraction.Extract(response) // Handle error with string + + fmt.Println("Ollama's response:", generatedCode) + + output, err := compiler.CompileStringToGo(generatedCode) + + if err != nil { + fmt.Println("There were an error in the code that was compiled") + userPrompt = output + "\nFollowing are the errors, please fix the code. Write it again, and write only source code along with same test cases with no further explanation. The format should be ```rust <yourcode + testcases> ```" + } else { + fmt.Println("Compiled successfully. Here is the output: %v", output) + //userPrompt = "exit" + } + + } +} diff --git a/llama/promptList.txt b/llama/promptList.txt new file mode 100644 index 0000000000000000000000000000000000000000..083807ee7adb60b095ddffe2aac690337781d833 --- /dev/null +++ b/llama/promptList.txt @@ -0,0 +1,4 @@ +write a code that ads 1 and 1 +make a output with numbers from 1 to 10 +make a output with prime numbers from 1 to 20 +make a bubble sort and input to run it from main \ No newline at end of file