chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:58:18 +08:00
commit 6d5d58c1a9
18293 changed files with 3502153 additions and 0 deletions
@@ -0,0 +1,81 @@
from pathlib import Path
from textwrap import dedent
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
from pydantic_ai.ag_ui import StateDeps
from ag_ui.core import EventType, StateSnapshotEvent
from pydantic_ai.models.openai import OpenAIResponsesModel
# load environment variables
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
load_dotenv()
# =====
# State
# =====
class ProverbsState(BaseModel):
"""List of the proverbs being written."""
proverbs: list[str] = Field(
default_factory=list,
description="The list of already written proverbs",
)
# =====
# Agent
# =====
agent = Agent(
model=OpenAIResponsesModel("gpt-4.1-mini"),
deps_type=StateDeps[ProverbsState],
system_prompt=dedent("""
You are a helpful assistant that helps manage and discuss proverbs.
The user has a list of proverbs that you can help them manage.
You have tools available to add, set, or retrieve proverbs from the list.
When discussing proverbs, ALWAYS use the get_proverbs tool to see the current list before
mentioning, updating, or discussing proverbs with the user.
""").strip(),
)
# =====
# Tools
# =====
@agent.tool
def get_proverbs(ctx: RunContext[StateDeps[ProverbsState]]) -> list[str]:
"""Get the current list of proverbs."""
print(f"📖 Getting proverbs: {ctx.deps.state.proverbs}")
return ctx.deps.state.proverbs
@agent.tool
async def add_proverbs(
ctx: RunContext[StateDeps[ProverbsState]], proverbs: list[str]
) -> StateSnapshotEvent:
ctx.deps.state.proverbs.extend(proverbs)
return StateSnapshotEvent(
type=EventType.STATE_SNAPSHOT,
snapshot=ctx.deps.state,
)
@agent.tool
async def set_proverbs(
ctx: RunContext[StateDeps[ProverbsState]], proverbs: list[str]
) -> StateSnapshotEvent:
ctx.deps.state.proverbs = proverbs
return StateSnapshotEvent(
type=EventType.STATE_SNAPSHOT,
snapshot=ctx.deps.state,
)
@agent.tool
def get_weather(_: RunContext[StateDeps[ProverbsState]], location: str) -> str:
"""Get the weather for a given location. Ensure location is fully spelled out."""
return f"The weather in {location} is sunny."
@@ -0,0 +1,23 @@
from agent import ProverbsState, StateDeps, agent
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Mount, Route
agui_app = agent.to_ag_ui(deps=StateDeps(ProverbsState()))
async def health(request):
return JSONResponse({"status": "ok"})
app = Starlette(
routes=[
Route("/health", health),
Mount("/", app=agui_app),
]
)
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)