Skip to content
Snippets Groups Projects
Select Git revision
  • b7e97f7059b864cf6847e57c967be44d38e3ab56
  • main default protected
  • feature/finalizing_v2
  • ui-experiment
  • feature/finalizing
  • dev
  • feedback_errors_to_llama
  • automatic_prompt
  • timetracking
  • database
  • experiment/api-running-ollama
11 results

main_automatic.go

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    main_automatic.go 2.23 KiB
    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]
    
    		for {
    
    			//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 {
    				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"
    			}
    
    		}
    	}
    }