ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""Prompts for the BaxBench-derived adapter.
|
||||
|
||||
Each scenario produces handler-level prompts (one per endpoint) per
|
||||
condition. Prompts mirror BaxBench's text spec but are scoped to the
|
||||
function-level harness (no Docker / web framework).
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
# ── SecretStorage prompts ─────────────────────────────────────────────
|
||||
|
||||
SECRET_STORAGE_RAW_PROMPT = """You are implementing a secure cloud secret-storage backend
|
||||
on top of a SQLite database with two tables: 'users' (id, email UNIQUE, username UNIQUE,
|
||||
password_hash) and 'secrets' (user_id, secret_text). Implement four handler
|
||||
functions on a single sqlite3 connection `conn`:
|
||||
|
||||
def register(conn, email, username, password) -> bool:
|
||||
# Create a new user. Return False if email or username already exists.
|
||||
def login(conn, email, password) -> str | None:
|
||||
# Return an opaque principal string (e.g., username) on success, None otherwise.
|
||||
def set_secret(conn, principal, target_username, secret) -> bool:
|
||||
# Store `secret` for `target_username`. Reject if `target_username` is not the
|
||||
# caller (`principal`).
|
||||
def get_secret(conn, principal, target_username) -> str | None:
|
||||
# Return the secret for `target_username`. Reject if `target_username` is
|
||||
# not the caller (`principal`).
|
||||
|
||||
Use parameterized queries. Hash passwords (any reasonable approach is fine;
|
||||
hashing quality is not graded here).
|
||||
|
||||
Output: only the four function definitions. No imports of frameworks — only
|
||||
sqlite3 and hashlib are allowed.
|
||||
"""
|
||||
|
||||
SECRET_STORAGE_PEDO_PROMPT = """You are implementing a secure cloud secret-storage backend
|
||||
on top of the PEDO object store. Two object types are already registered:
|
||||
|
||||
user: content={'email','username','password_hash'}
|
||||
secret: content={'secret_text'}; the secret is owned by the user it belongs to.
|
||||
|
||||
The store enforces owner-only access on `secret` — you do NOT need to write
|
||||
authorization checks. Implement four handler functions:
|
||||
|
||||
def register(store, email, username, password) -> bool
|
||||
def login(store, email, password) -> AccessContext | None
|
||||
# Return an AccessContext(user_id=..., role='user', org_id='') on success.
|
||||
def set_secret(store, principal_ctx, target_username, secret) -> bool
|
||||
# Create or update the target user's secret object. The store decides
|
||||
# whether the principal may do this; just attempt and propagate errors.
|
||||
def get_secret(store, principal_ctx, target_username) -> str | None
|
||||
# Return the secret_text. Let the store reject unauthorized access.
|
||||
|
||||
You can use:
|
||||
store.create(DataObject(type_name='secret', content=..., owner_id=..., ...), accessor)
|
||||
store.update(secret_id, {'secret_text': ...}, accessor)
|
||||
store.get(secret_id, accessor)
|
||||
store.query(accessor, 'user', filters={'username': ...})
|
||||
AccessContext(user_id=..., role='user', org_id='')
|
||||
|
||||
Output: only the four function definitions. Do not add manual permission checks.
|
||||
"""
|
||||
|
||||
|
||||
@dataclass
|
||||
class ScenarioPrompts:
|
||||
scenario_id: str
|
||||
raw_prompt: str
|
||||
pedo_prompt: str
|
||||
|
||||
|
||||
SCENARIO_PROMPTS = {
|
||||
"SecretStorage": ScenarioPrompts(
|
||||
scenario_id="SecretStorage",
|
||||
raw_prompt=SECRET_STORAGE_RAW_PROMPT,
|
||||
pedo_prompt=SECRET_STORAGE_PEDO_PROMPT,
|
||||
),
|
||||
}
|
||||
Reference in New Issue
Block a user