go/code_execution.go (65 lines of code) (raw):
package examples
import (
"context"
"fmt"
"os"
"log"
"google.golang.org/genai"
)
func CodeExecutionBasic() (*genai.GenerateContentResponse, error) {
// [START code_execution_basic]
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GEMINI_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
if err != nil {
log.Fatal(err)
}
response, err := client.Models.GenerateContent(
ctx,
"gemini-2.0-pro-exp-02-05",
genai.Text(
`Write and execute code that calculates the sum of the first 50 prime numbers.
Ensure that only the executable code and its resulting output are generated.`,
),
&genai.GenerateContentConfig{},
)
if err != nil {
log.Fatal(err)
}
// Print the response.
printResponse(response)
fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())
// [END code_execution_basic]
// [START code_execution_basic_return]
// Expected output:
// --------------------------------------------------------------------------------
// ```python
// def is_prime(n):
// if n <= 1:
// return False
// for i in range(2, int(n**0.5) + 1):
// if n % i == 0:
// return False
// return True
// sum_of_primes = 0
// count = 0
// num = 2
// while count < 50:
// if is_prime(num):
// sum_of_primes += num
// count += 1
// num += 1
// print(sum_of_primes)
// ```
// ```output
// 5117
// ```
// [END code_execution_basic_return]
return response, err
}
func CodeExecutionRequestOverride() (*genai.GenerateContentResponse, error) {
// [START code_execution_request_override]
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GEMINI_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
if err != nil {
log.Fatal(err)
}
response, err := client.Models.GenerateContent(
ctx,
"gemini-2.0-pro-exp-02-05",
genai.Text(
`What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.`,
),
&genai.GenerateContentConfig{
Tools: []*genai.Tool{
{CodeExecution: &genai.ToolCodeExecution{}},
},
},
)
if err != nil {
log.Fatal(err)
}
// Print the response.
printResponse(response)
fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.ExecutableCode())
fmt.Println(response.CodeExecutionResult())
// [END code_execution_request_override]
// [START code_execution_request_override_return]
// Expected output:
// --------------------------------------------------------------------------------
// def is_prime(n):
// if n <= 1:
// return False
// if n <= 3:
// return True
// if n % 2 == 0 or n % 3 == 0:
// return False
// i = 5
// while i * i <= n:
// if n % i == 0 or n % (i + 2) == 0:
// return False
// i += 6
// return True
// def sum_of_first_n_primes(n):
// primes = []
// num = 2
// while len(primes) < n:
// if is_prime(num):
// primes.append(num)
// num += 1
// return sum(primes)
// print(sum_of_first_n_primes(50))
// 5117
// [END code_execution_request_override_return]
return response, err
}