Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Google Gemini může pohánět agenta Agent Framework prostřednictvím Gemini Developer API nebo Gemini Enterprise Agent Platform (dříve Vertex AI). Klient specifický pro poskytovatele zpracovává možnosti ověřování a požadavků Gemini, zatímco Agent Framework vlastní definici a orchestraci agenta.
Důležité
Google Gemini a Vertex AI jsou systémy třetích stran. Než odešlete data, zkontrolujte podmínky služeb, zpracování dat, regionální hranice, přístup k modelu a náklady na využití.
Nainstalujte Gemini IChatClient
Ukázka .NET ukazuje oficiálního klienta Google GenAI a implementaci komunityMscc.GenerativeAI.Microsoft.
dotnet add package Google.GenAI
dotnet add package Mscc.GenerativeAI.Microsoft
dotnet add package Microsoft.Agents.AI --prerelease
Configuration
GOOGLE_GENAI_API_KEY="<google-ai-studio-api-key>"
GOOGLE_GENAI_MODEL="gemini-2.5-flash"
const string JokerInstructions = "You are good at telling jokes.";
const string JokerName = "JokerAgent";
string apiKey = Environment.GetEnvironmentVariable("GOOGLE_GENAI_API_KEY") ?? throw new InvalidOperationException("Please set the GOOGLE_GENAI_API_KEY environment variable.");
string model = Environment.GetEnvironmentVariable("GOOGLE_GENAI_MODEL") ?? "gemini-2.5-flash";
// Using a Google GenAI IChatClient implementation
ChatClientAgent agentGenAI = new(
new Client(vertexAI: false, apiKey: apiKey).AsIChatClient(model),
name: JokerName,
instructions: JokerInstructions);
AgentResponse response = await agentGenAI.RunAsync("Tell me a joke about a pirate.");
Console.WriteLine($"Google GenAI client based agent response:\n{response}");
// Using a community driven Mscc.GenerativeAI.Microsoft package
ChatClientAgent agentCommunity = new(
new GeminiChatClient(apiKey: apiKey, model: model),
name: JokerName,
instructions: JokerInstructions);
response = await agentCommunity.RunAsync("Tell me a joke about a pirate.");
Console.WriteLine($"Community client based agent response:\n{response}");
Vyberte jednu z implementací IChatClient a nakonfigurujte ověřování pro Gemini Developer API nebo Vertex AI.
Nainstalujte balíček
pip install agent-framework-gemini --pre
Configuration
Použijte buď rozhraní Gemini Developer API:
GOOGLE_API_KEY="<api-key>"
GOOGLE_MODEL="gemini-2.5-flash"
Nebo nakonfigurujte platformu Gemini Enterprise Agent:
GOOGLE_GENAI_USE_ENTERPRISE="true"
GOOGLE_CLOUD_PROJECT="<project-id>"
GOOGLE_CLOUD_LOCATION="global"
GOOGLE_MODEL="gemini-2.5-flash"
Starší GOOGLE_GENAI_USE_VERTEXAI=true nastavení zůstává podporováno. Konektor již nepřečte GEMINI_API_KEY, GEMINI_MODELnebo GEMINI_EMBEDDING_MODEL; používat odpovídající GOOGLE_* proměnné nebo předávat hodnoty explicitně.
GeminiChatClient podporuje streamování, nástroje funkcí, strukturovaný výstup, rozšířené myšlení a nástroje hostované poskytovatelem.
"""Runs the agent and waits for the complete response before printing it."""
print("=== Non-streaming ===")
# 1. Create the agent with the Gemini chat client and local weather tool.
agent = Agent(
client=GeminiChatClient(),
name="WeatherAgent",
instructions="You are a helpful weather agent.",
tools=[get_weather],
)
# 2. Ask the agent for a single weather lookup and print the final response.
query = "What's the weather like in Karlsruhe, Germany?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Result: {result}\n")
async def streaming_example() -> None:
"""Runs the agent and prints each chunk as it is received."""
print("=== Streaming ===")
# 1. Create the same agent configuration for a streaming tool-call example.
agent = Agent(
client=GeminiChatClient(),
name="WeatherAgent",
instructions="You are a helpful weather agent.",
tools=[get_weather],
)
# 2. Ask a multi-location question and stream the model output as it arrives.
query = "What's the weather like in Portland and in Paris?"
print(f"User: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run(query, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print("\n")
Řešení selhání požadavků
Při streamovaných i nestreamovaných bězích se selhání požadavků Gemini SDK projevují jako výjimky rozhraní Agent Framework. Chyby HTTP 401 a 403 vyvolají ChatClientInvalidAuthException, další chyby HTTP 4xx vyvolají ChatClientInvalidRequestException a všechny ostatní chyby poskytovatele vyvolají ChatClientException.
Zachyťte ChatClientException , kdy by se mělo použít stejné zpracování chyb u poskytovatelů chatu.
Zahrnout myšlenkové souhrny
Rozšířená ukázka myšlení ukazuje, jak nakonfigurovat ThinkingConfig. Pokud chcete získat souhrny myšlenek Gemini, nastavte include_thoughts=True v konfiguraci myšlení:
options: GeminiChatOptions = {
"thinking_config": ThinkingConfig(include_thoughts=True, thinking_budget=2048),
}
Když Gemini vrátí myšlenkový souhrn, GeminiChatClient přidá ho do odpovědi jako Content s type == "text_reasoning". Přečtěte si souhrn z content.text.
Pro spuštění bez streamování odfiltrujte contents u každé položky v result.messages. Pro spuštění streamování vyfiltrujte každou chunk.contentsz nich . Přístupové objekty k textu, jako jsou result.text a chunk.text, obsahují pouze obsah text, proto zkontrolujte kolekce obsahu, když vaše aplikace potřebuje shrnutí odůvodnění.
Generování vložených objektů
GeminiEmbeddingClient ve výchozím nastavení používá gemini-embedding-2 . Přepište to pomocí GOOGLE_EMBEDDING_MODEL nebo parametru konstruktoru model. Textové vstupy vyžadují typ úkolu při každém volání; používá RETRIEVAL_DOCUMENT se při indexování a RETRIEVAL_QUERY při vyhledávání ve stejném vektorovém prostoru.
import asyncio
from agent_framework.gemini import GeminiEmbeddingClient
from dotenv import load_dotenv
load_dotenv()
async def main() -> None:
"""Embed a document and a search query for the same vector index."""
# 1. Choose task instructions for each call, not for the client.
client = GeminiEmbeddingClient()
try:
# 2. Use matching dimensions for stored documents and search queries.
document = await client.get_embeddings(
["Agent Framework helps build and orchestrate AI agents."],
options={"task_type": "RETRIEVAL_DOCUMENT", "title": "Agent Framework", "dimensions": 768},
)
query = await client.get_embeddings(
["How can I orchestrate AI agents?"],
options={"task_type": "RETRIEVAL_QUERY", "dimensions": 768},
)
print(f"Document embedding: {document[0].dimensions} dimensions")
print(f"Query embedding: {query[0].dimensions} dimensions")
Pro vkládání dokumentů a dotazů použijte stejný model a dimenze. Klient také přijímá hodnoty médií Google SDK Part a Content pro embeddingy obrázků, zvuku, videa, PDF nebo kombinované embeddingy textu a médií. Multimediální vstupy nepoužívají předponu textového úkolu.
Když kolekce vektorů generuje embeddingy, předejte úlohu dokumentu přes upsert(..., embeddings_options=...) a úlohu dotazu přes search(..., embeddings_options=...) nebo create_vector_search_tool(..., embeddings_options=...). Pro více vektorových polí použijte embeddings_options_by_field. Agent Framework poskytuje dimenze vybraného pole a odmítá konfliktní hodnoty.
Balíček obsahuje továrny pro uzemnění vyhledávání Google, uzemnění Map Google, spouštění kódu, vyhledávání souborů a MCP.
Uzemnění vyhledávání Google
from agent_framework import Agent
from agent_framework.gemini import GeminiChatClient
from dotenv import load_dotenv
load_dotenv()
async def main() -> None:
"""Run the Google Search grounding example."""
print("=== Google Search grounding ===")
# 1. Create the agent with Gemini and the built-in Google Search grounding tool.
agent = Agent(
client=GeminiChatClient(),
name="SearchAgent",
instructions="You are a helpful assistant. Use Google Search to provide accurate, up-to-date answers.",
tools=[GeminiChatClient.get_web_search_tool()],
)
# 2. Ask a current-events style question and stream the grounded answer.
query = "What is the latest stable release of the .NET SDK?"
print(f"User: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run(query, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print("\n")
if __name__ == "__main__":
asyncio.run(main())
Go SDK poskytuje geminiprovider pro inferenci Gemini. Vytvořte standard *agent.Agent prostřednictvím konstruktoru specifického pro zprostředkovatele.
Podívejte se na balíček poskytovatele Gemini a příklady.
Tools
| nástroj | jazyk C# | Python | Go | Notes |
|---|---|---|---|---|
| Funkční nástroje | ✅ | ✅ | ✅ | Volání funkcí standardního modelu |
| Schválení nástroje | ✅ | ✅ | ✅ | Používá se smyčkou nástrojů architektury. |
| Interpretér kódu | ❌ | ✅ | ❌ |
GeminiChatClient.get_code_interpreter_tool(). |
| Hledání souborů | ❌ | ✅ | ❌ |
GeminiChatClient.get_file_search_tool(). |
| Vyhledávání na webu | ❌ | ✅ | ❌ | Ukotvení pomocí Google Search prostřednictvím get_web_search_tool(). |
| Ukotvení v Mapách Google | ❌ | ✅ | ❌ |
GeminiChatClient.get_maps_grounding_tool(). |
| Hostované nástroje MCP | ❌ | ✅ | ❌ |
GeminiChatClient.get_mcp_tool(). |
| Místní nástroje MCP | ✅ | ✅ | ✅ | Spustí se v procesu aplikace. |