func ThinkingTextOnlyPromptStreaming()

in go/thinking_generation.go [53:84]


func ThinkingTextOnlyPromptStreaming() (string, error) {
	// [START thinking_text_only_prompt_streaming]
	ctx := context.Background()
	client, err := newGenAIClient(ctx)
	if err != nil {
		log.Printf("Failed to create client: %v", err)
		return "", err
	}

	prompt := "Explain the concept of Occam's Razor and provide a simple, everyday example."
	contents := []*genai.Content{
		genai.NewContentFromText(prompt, genai.RoleUser),
	}

	var fullResponse strings.Builder
	stream := client.Models.GenerateContentStream(ctx, modelID, contents, nil)
	for resp, err := range stream {
		if err != nil {
			log.Printf("Stream error: %v", err)
			return fullResponse.String(), err
		}
		// Check if there are candidates and parts before accessing
		if len(resp.Candidates) > 0 && len(resp.Candidates[0].Content.Parts) > 0 {
			textPart := resp.Candidates[0].Content.Parts[0].Text
			fmt.Print(textPart) // Print chunk directly
			fullResponse.WriteString(textPart)
		}
	}
	fmt.Println("\n" + strings.Repeat("_", 80))
	// [END thinking_text_only_prompt_streaming]
	return fullResponse.String(), nil
}