mirror of
https://github.com/google/adk-docs.git
synced 2026-09-14 16:16:59 +08:00
8834593806
* docs: Add Go language quickstart * updates based on review comments * fix tab stops * update based on review comments * sync with main * update to tested version * Added google_search snippet * Fix: Address Go style guide issues in google_search.go * Migrated to new API * Fixed tool info in md file * Added partial check * Added function-tools sample * Migrated to new API * Added partial check * Ran linter * feat: add go fmt check * Run go fmt only on changed files * Added google_search snippet * Fix: Address Go style guide issues in google_search.go * Migrated to new API * Added partial check * Added function-tools sample * Migrated to new API * Added partial check * Ran linter * feat: add go fmt check * Run go fmt only on changed files * Feat: Add Golang example for LLM agents * Added schema agent * Added session support * Migrated to new API * Added back OutputKey * Added missing snippets * Moved snipped to its own package * Minor cleanup * Reverted llm-agents.md * Added back correct changes to llm-agents.md * Updated to newest API * Ran linter * WIP * WIP: Added the rest of the agents * Added sequential agent * Migrated agents to new API * Fixed snippet tags * Updated parallel and sequential with OutputKey * Updated loop agent * Cleanup * Fixed and ran linter * Removed comment * Ran linter * Added custom agent snippets * Migrated to new API * Fixed incorrect info about channels since run returns an Iterator, not Channel * Cleanup and renaming * Ran linter * Fixed md * Added multi-agent docs * Updated to use AgentTool * Split snippets * Added missing file * Ran linter and fixed API * Added Models snippets * Migrated to new API * Embedded imports * Ran linter * Added long running tool * Ran linter and fixed API * Switched to two-turn style * Ran linter * Added callback snippets * Added back imports * Added types of callbacks snippets * feat(go): align callback snippets with other languages * Ran linter and updated API * Added tool callbacks * Added artifact snippets * Use story.pdf instead of random bytes * Fixed issue with artifact loading * Cleanup unneeded fixes * Added back inadvertently removed GCS section * Addressed PR comments * Ran linter * feat: Added context snippets * Fixed callback signature * Fixed additional callbacks * Added remaining snippets * Added conceptual runner example * Removed duplicate code * Clean up tags and imports * Updated API * Twaked text * Ran linter * Fixed broken API issues * Updated to latest Go ADK API * Added func param info * Interleaved Py and Go * Revert mistakes * Removed extra newline * Added example cloud run code and update md with Go (#41) * Added example cloud run code and update md with Go * Added a2a_agent_url and fixed future tense * Moved Go before Java --------- Co-authored-by: ivanmkc <ivanmkc@google.com> * adding go snippets to runconfig docs * realigning runconfig go examples with current state of adk-go. * adding language support tags to individual runtime config fields * removing unsupported supportcfc go examples * removing unsupported streamingmode.bidi go snippets * Added AgentTool examples (#31) * Added AgentTool example * Ran formatter --------- Co-authored-by: ivanmkc <ivanmkc@google.com> * adding initial go sessions.sessions snippets * updating go session docs + session examples * update go session snippets * updating DatabaseSessionService language support tag * cleaning up go vertex ai comments * removing go.mod for session_management_example * docs: add language support tags for Go * initial go runtime sample updates * fixing runtime go snippet formatting * formatting updates to runtime go snippets * updating runtime go examples to streamline to newer go features * adding go snippets for events * updating go snippets for events * adding artifactdelta snippet for go * minor java fixes, cleaning up go event.content * Custom tools: Merging again (#44) * Added missing custom-tools snippets * Split user_preference runner code * Split more files * Tweaks * Split session into 1 and 2 and added artifact saving * Fixed conflict --------- Co-authored-by: ivanmkc <ivanmkc@google.com> * Fixed tab issue with cloud-run md (#45) Co-authored-by: ivanmkc <ivanmkc@google.com> * adding initial go snippets for memory services * updating go memory sample, adding python formatting in docs to clarify current support. * removing go replace for memory example * removing go.sum from memory_example * fixing go formatting for memory example * fixing go memory snippets to streamline examples in docs * removing unnecessary go.mod for memory_example.go and snippet cleanup * adding go session state snippets." * adding additional go state examples for state injection * fixing go formatting * fixing language ordering on session/state.md; removing unnecessary go.mod files * reworking error functions in go session state samples * fixing go formatting on session state samples * initial go snippets for safety tools * fixing go snippet formatting in safety/index.md * temp storing safety example * cleaning up go snippets in safety docs; deferring safety go full example * cleaning up go safety snippets * Added link to Go API docs (#47) Co-authored-by: ivanmkc <ivanmkc@google.com> * Added a2a_basic sample (#46) * Added a2a_basic sample * Removed dummy LLMs * Added md Fix inaccuracies in md Ran formatter * Cleaned up index --------- Co-authored-by: ivanmkc <ivanmkc@google.com> * Reverted to proper ToC and added missing links (#48) Co-authored-by: ivanmkc <ivanmkc@google.com> * Added missing get-started/go.md (#50) Co-authored-by: ivanmkc <ivanmkc@google.com> * Added missing JSON tags for Go structs (#51) * Added json tags * Added jsonschema and json tags --------- Co-authored-by: ivanmkc <ivanmkc@google.com> * Renamed Golang to Go (#52) Co-authored-by: ivanmkc <ivanmkc@google.com> --------- Co-authored-by: Joe Fernandez <joefernandez@google.com> Co-authored-by: ivanmkc <ivanmkc@google.com> Co-authored-by: Toni Klopfenstein <tklopfenstein@google.com>
102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
// Copyright 2025 Google LLC
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"google.golang.org/adk/agent/llmagent"
|
|
"google.golang.org/adk/cmd/launcher/adk"
|
|
"google.golang.org/adk/cmd/launcher/full"
|
|
"google.golang.org/adk/server/restapi/services"
|
|
|
|
"google.golang.org/adk/model/gemini"
|
|
"google.golang.org/adk/tool"
|
|
"google.golang.org/adk/tool/functiontool"
|
|
"google.golang.org/genai"
|
|
)
|
|
|
|
type getCapitalCityArgs struct {
|
|
Country string `json:"country" jsonschema:"The country for which to find the capital city."`
|
|
}
|
|
|
|
type getCapitalCityResult struct {
|
|
Result string `json:"result,omitempty"`
|
|
ErrorMessage string `json:"error_message,omitempty"`
|
|
}
|
|
|
|
func getCapitalCity(ctx tool.Context, args getCapitalCityArgs) getCapitalCityResult {
|
|
capitals := map[string]string{
|
|
"united states": "Washington, D.C.",
|
|
"canada": "Ottawa",
|
|
"france": "Paris",
|
|
"japan": "Tokyo",
|
|
}
|
|
capital, ok := capitals[strings.ToLower(args.Country)]
|
|
if !ok {
|
|
result := fmt.Sprintf("Sorry, I couldn't find the capital for %s.", args.Country)
|
|
return getCapitalCityResult{ErrorMessage: result}
|
|
}
|
|
|
|
return getCapitalCityResult{Result: capital}
|
|
}
|
|
|
|
func main() {
|
|
ctx := context.Background()
|
|
|
|
model, err := gemini.NewModel(ctx, "gemini-2.5-flash", &genai.ClientConfig{
|
|
APIKey: os.Getenv("GOOGLE_API_KEY"),
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("Failed to create model: %v", err)
|
|
}
|
|
|
|
capitalTool, err := functiontool.New(
|
|
functiontool.Config{
|
|
Name: "get_capital_city",
|
|
Description: "Retrieves the capital city for a given country.",
|
|
},
|
|
getCapitalCity,
|
|
)
|
|
if err != nil {
|
|
log.Fatalf("Failed to create function tool: %v", err)
|
|
}
|
|
|
|
agent, err := llmagent.New(llmagent.Config{
|
|
Name: "capital_agent",
|
|
Model: model,
|
|
Description: "Agent to find the capital city of a country.",
|
|
Instruction: "I can answer your questions about the capital city of a country.",
|
|
Tools: []tool.Tool{capitalTool},
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("Failed to create agent: %v", err)
|
|
}
|
|
|
|
config := &adk.Config{
|
|
AgentLoader: services.NewSingleAgentLoader(agent),
|
|
}
|
|
|
|
l := full.NewLauncher()
|
|
err = l.Execute(ctx, config, os.Args[1:])
|
|
if err != nil {
|
|
log.Fatalf("run failed: %v\n\n%s", err, l.CommandLineSyntax())
|
|
}
|
|
}
|