Files
Ashpreet c7c5adcc60 cookbook: overhaul agent quickstart for Gemini 3.6 Flash (#9136)
## Summary

Overhauls `cookbook/00_quickstart` into a coherent capability ladder:
build one useful agent, add context and learning, introduce safety and
human approval, then scale to teams, workflows, and AgentOS.

- Upgrades every active quickstart model to the stable
`gemini-3.6-flash` ID.
- Repositions the README around **Build an Agent That Can Act, Remember,
and Improve**, with a minimal first success and clear Core → Context →
Trust → Scale → Ship progression.
- Replaces the hand-built self-learning demo with the canonical
`LearningMachine` and shared learned knowledge.
- Fixes misleading guardrail status handling, structured-output truth
claims, optional-value handling, and cross-session memory behavior.
- Gives each stateful example isolated SQLite/Chroma storage and stable
session IDs.
- Makes knowledge deterministic with a versioned local fixture.
- Reworks human approval to verify both approve and reject paths.
- Narrows tool exposure, refreshes AgentOS prompts/registration, and
regenerates a lean Agno 2.8 dependency lock.
- Adds a repeatable live test plan and preserves the historical Gemini
3.5 verification record.

This makes the folder useful as both a newcomer journey and a set of
standalone, copyable agent patterns.

## Type of change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [x] Improvement
- [x] Model update
- [ ] Other:

---

## Checklist

- [x] Code complies with style guidelines
- [x] Ran format/validation scripts (`./scripts/format.sh` and
`./scripts/validate.sh`)
- [x] Self-review completed
- [x] Documentation updated (comments, docstrings)
- [x] Examples and guides: Relevant cookbook examples have been included
or updated (if applicable)
- [x] Tested in clean environment
- [x] Tests added/updated (if applicable)

### Duplicate and AI-Generated PR Check

- [x] I have searched existing [open pull requests](../../pulls) and
confirmed that no other PR already addresses this issue
- [x] If a similar PR exists, I have explained below why this PR is a
better approach
- [x] Check if this PR was entirely AI-generated (by Copilot, Claude
Code, Cursor, etc.)

---

## Additional Notes

Validation completed against Agno `2.8.0`, `google-genai==2.14.0`, and
Gemini 3.6 Flash:

- 12/12 quickstart cookbooks passed live behavioral checks.
- AgentOS passed with 10 agents, 1 team, and 1 workflow; `/health` and
`/config` returned successfully.
- Approval/rejection, guardrail failure paths, cross-session memory, and
process-restart persistence passed.
- Focused unit suite: 82 passed, 1 skipped.
- `./scripts/format.sh`, `./scripts/validate.sh`, `compileall`, cookbook
pattern checks, and `git diff --check` passed.
- An independent final diff review found no remaining correctness
issues.

The global Gemini framework default is intentionally unchanged; this PR
only updates the quickstart folder. Historical Gemini 3.5 results remain
in `TEST_LOG.md` under a clearly labeled historical section.

Prepared with Codex under user direction and validated with live model
calls plus repository gates.
2026-07-23 23:22:18 +01:00

69 lines
2.2 KiB
Python

"""
Agent with Tools - Your First Useful Agent
===========================================
Start here. This example combines the three pieces of an Agno agent:
1. A model that reasons about the request
2. Instructions that define good work
3. Tools that let the agent act on live data
The agent uses Yahoo Finance to turn a plain-English question into tool calls
and a current market brief.
Example prompts to try:
- "What's the current price of AAPL?"
- "Compare NVDA and AMD"
- "Give me a quick market brief on Microsoft"
"""
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.yfinance import YFinanceTools
# ---------------------------------------------------------------------------
# Create the Agent
# ---------------------------------------------------------------------------
agent_with_tools = Agent(
name="Agent with Tools",
model=Gemini(id="gemini-3.6-flash"),
instructions=[
"Use Yahoo Finance for facts that can change.",
"Lead with the answer, then show the evidence.",
"Use a table when comparing companies.",
"Say when data is unavailable; never invent a value.",
"Keep the response concise and do not give personalized financial advice.",
],
tools=[
YFinanceTools(
enable_company_info=True,
enable_stock_fundamentals=True,
enable_company_news=True,
)
],
add_datetime_to_context=True,
markdown=True,
)
# ---------------------------------------------------------------------------
# Run the Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
agent_with_tools.print_response(
"Give me a quick market brief on NVIDIA",
stream=True,
)
# ---------------------------------------------------------------------------
# More Examples
# ---------------------------------------------------------------------------
"""
Swap the prompt and run the file again:
- Single company: "What is Apple's current valuation?"
- Comparison: "Compare Google and Microsoft"
- Sector: "Show key metrics for NVDA, AMD, GOOGL, and MSFT"
The same Agent object can be reused for every request. Do not create agents
inside a loop.
"""