Files
liqiang b119135836
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
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

44 lines
1.2 KiB
Python

from typing import Sequence
from pydantic import BaseModel, Field, model_validator
from typing import Optional
class MetricTemplate(BaseModel):
"""
MetricTemplate is a class for defining a metric template.
"""
type: str
name: str
description: Optional[str] = None
unit: Optional[str] = Field(default="1")
labels: Optional[list[str]] = None
buckets: Optional[Sequence[float]] = None
@model_validator(mode='before')
def set_default_description(cls, values):
"""
Set the default description if it is not set.
"""
if 'description' not in values or values['description'] is None:
values['description'] = values['name']
return values
class MetricTemplates:
REQUEST_COUNT = MetricTemplate(**{
"type": "counter",
"name": "request_count",
"description": "The number of requests received",
"unit": "1",
"labels": ["method", "status"]
})
REQUEST_LATENCY = MetricTemplate(**{
"type": "histogram",
"name": "request_latency",
"description": "The latency of requests",
"unit": "ms",
"labels": ["method", "status"],
# "buckets": [0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100, 500, 1000]
})