Gemini 2.5 Pro Experimental and Gemini 2.0 Flash Thinking Experimental are models that use an internal "thinking process" during response generation. This process contributes to their improved reasoning capabilities and allows them to solve complex tasks. This guide shows you how to use Gemini models with thinking capabilities.
Use thinking models
Models with thinking capabilities are available in Google AI Studio and through the Gemini API. Note that the thinking process is visible within Google AI Studio but is not provided as part of the API output.
Send a basic request
Python
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
model="gemini-2.5-pro-exp-03-25", # or gemini-2.0-flash-thinking-exp
contents=prompt
)
print(response.text)
JavaScript
const { GoogleGenAI } = require("@google/genai");
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
async function main() {
const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";
const response = await ai.models.generateContent({
model: "gemini-2.5-pro-exp-03-25", // or gemini-2.0-flash-thinking-exp
contents: prompt,
});
console.log(response.text);
}
main();
Go
// import packages here
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-2.5-pro-exp-03-25") // or gemini-2.0-flash-thinking-exp
resp, err := model.GenerateContent(ctx, genai.Text("Explain the concept of Occam's Razor and provide a simple, everyday example."))
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-exp-03-25:generateContent?key=$YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain the concept of Occam\''s Razor and provide a simple, everyday example."
}
]
}
]
}'
```
Multi-turn thinking conversations
To take the previous chat history into account, you can use multi-turn conversations.
With the SDKs, you can create a chat session to manage the state of the conversation.
Python
from google import genai
client = genai.Client(api_key='GEMINI_API_KEY')
chat = client.aio.chats.create(
model='gemini-2.5-pro-exp-03-25', # or gemini-2.0-flash-thinking-exp
)
response = await chat.send_message('What is your name?')
print(response.text)
response = await chat.send_message('What did you just say before this?')
print(response.text)
JavaScript
const { GoogleGenAI } = require("@google/genai");
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
async function main() {
const chat = ai.chats.create({
model: 'gemini-2.5-pro-exp-03-25' // or gemini-2.0-flash-thinking-exp
});
const response = await chat.sendMessage({
message: 'What is your name?'
});
console.log(response.text);
response = await chat.sendMessage({
message: 'What did you just say before this?'
});
console.log(response.text);
}
main();
What's next?
- Try Gemini 2.5 Pro Experimental in Google AI Studio.
- Learn more about Prompting for thinking models.
- For more info about Gemini 2.5 Pro Experimental and Gemini Flash 2.0 Thinking, see the model page.
- Try more examples in the Thinking cookbook.