Loading...
Loading...
Compare original and translation side by side
from pydantic_ai import Agent, RunContext
agent = Agent('openai:gpt-4o')from pydantic_ai import Agent, RunContext
agent = Agent('openai:gpt-4o')Args:
ctx: The run context with dependencies.
user_id: The user's ID.
"""
return await ctx.deps.db.get_user(user_id)参数:
ctx: 包含依赖项的运行上下文。
user_id: 用户的ID。
"""
return await ctx.deps.db.get_user(user_id)Args:
prices: List of prices to sum.
"""
return sum(prices)undefined参数:
prices: 需要求和的价格列表。
"""
return sum(prices)undefinedRunContext[DepsType]RunContextRunContext[DepsType]RunContext@agent.tool_plain
async def search(query: str, limit: int = 10) -> list[str]:
"""Search for items.
Args:
query: The search query.
limit: Maximum results to return.
"""@agent.tool_plain(docstring_format='sphinx')
async def search(query: str) -> list[str]:
"""Search for items.
:param query: The search query.
"""@agent.tool_plain
async def search(query: str, limit: int = 10) -> list[str]:
"""搜索项目。
参数:
query: 搜索关键词。
limit: 返回的最大结果数。
"""@agent.tool_plain(docstring_format='sphinx')
async def search(query: str) -> list[str]:
"""搜索项目。
:param query: 搜索关键词。
"""undefinedundefinedundefinedundefined@agent.tool
async def my_tool(ctx: RunContext[MyDeps]) -> str:
# Dependencies
db = ctx.deps.db
api = ctx.deps.api_client
# Model info
model_name = ctx.model.model_name
# Usage tracking
tokens_used = ctx.usage.total_tokens
# Retry info
attempt = ctx.retry # Current retry attempt (0-based)
max_retries = ctx.max_retries
# Message history
messages = ctx.messages
return "result"@agent.tool
async def my_tool(ctx: RunContext[MyDeps]) -> str:
# 依赖项
db = ctx.deps.db
api = ctx.deps.api_client
# 模型信息
model_name = ctx.model.model_name
# 使用跟踪
tokens_used = ctx.usage.total_tokens
# 重试信息
attempt = ctx.retry # 当前重试次数(从0开始)
max_retries = ctx.max_retries
# 消息历史
messages = ctx.messages
return "result"from pydantic_ai.tools import ToolDefinition
async def prepare_tools(
ctx: RunContext[MyDeps],
tool_defs: list[ToolDefinition]
) -> list[ToolDefinition]:
"""Filter or modify tools based on context."""
if ctx.deps.user_role != 'admin':
# Hide admin tools from non-admins
return [t for t in tool_defs if not t.name.startswith('admin_')]
return tool_defs
agent = Agent('openai:gpt-4o', prepare_tools=prepare_tools)from pydantic_ai.tools import ToolDefinition
async def prepare_tools(
ctx: RunContext[MyDeps],
tool_defs: list[ToolDefinition]
) -> list[ToolDefinition]:
"""根据上下文过滤或修改工具。"""
if ctx.deps.user_role != 'admin':
# 对非管理员隐藏管理员工具
return [t for t in tool_defs if not t.name.startswith('admin_')]
return tool_defs
agent = Agent('openai:gpt-4o', prepare_tools=prepare_tools)from pydantic_ai import FunctionToolset, CombinedToolsetfrom pydantic_ai import FunctionToolset, CombinedToolsetundefinedundefined@agent.tool_plain
async def bad_tool(ctx: RunContext[MyDeps]) -> str: # ERROR!
...@agent.tool_plain
async def bad_tool(ctx: RunContext[MyDeps]) -> str: # 错误!
...@agent.tool
def bad_tool(user_id: int) -> str: # ERROR!
...@agent.tool
def bad_tool(user_id: int) -> str: # 错误!
...@agent.tool
def bad_tool(user_id: int, ctx: RunContext[MyDeps]) -> str: # ERROR!
...@agent.tool
def bad_tool(user_id: int, ctx: RunContext[MyDeps]) -> str: # 错误!
...undefinedundefinedundefinedundefined