diff options
| -rw-r--r-- | genai/Makefile | 9 | ||||
| -rw-r--r-- | genai/aistudio.go | 60 | 
2 files changed, 69 insertions, 0 deletions
diff --git a/genai/Makefile b/genai/Makefile new file mode 100644 index 0000000..4ec151e --- /dev/null +++ b/genai/Makefile @@ -0,0 +1,9 @@ +testgo: goimports +	# GO111MODULE=off go run aistudio.go +	go run -v aistudio.go + +vet: +	GO111MODULE=off go vet + +goimports: +	goimports -w *.go diff --git a/genai/aistudio.go b/genai/aistudio.go new file mode 100644 index 0000000..ab6ccf2 --- /dev/null +++ b/genai/aistudio.go @@ -0,0 +1,60 @@ +package main + +import ( +	"context" +	"fmt" +	"log" +	"os" + +	"github.com/google/generative-ai-go/genai" +	"google.golang.org/api/option" +) + +func main() { +	ctx := context.Background() + +	apiKey := os.Getenv("GEMINI_API_KEY") +	if apiKey == "" { +		log.Fatal("GEMINI_API_KEY environment variable not set") +	} + +	client, err := genai.NewClient(ctx, option.WithAPIKey(apiKey)) +	if err != nil { +		log.Fatalf("Failed to create genai client: %v", err) +	} +	defer client.Close() + +	model := client.GenerativeModel("gemini-2.5-pro-preview-03-25") + +	// Set system instruction +	model.SystemInstruction = &genai.Content{ +		Parts: []genai.Part{ +			genai.Text("This is for working with the GO language files at http://go.wit.com/"), +		}, +	} + +	// Create user content +	userContent := &genai.Content{ +		Parts: []genai.Part{ +			genai.Text("what is the current version of forge on the webpage?"), +		}, +	} + +	// Stream content generation +	iter := model.GenerateContentStream(ctx, []*genai.Content{userContent}...) +	for { +		resp, err := iter.Next() +		if err != nil { +			break +		} +		for _, part := range resp.Candidates { +			if part.Content != nil { +				for _, p := range part.Content.Parts { +					if text, ok := p.(genai.Text); ok { +						fmt.Print(string(text)) +					} +				} +			} +		} +	} +}  | 
