-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path05_browser_text_uptime_agent.py
More file actions
78 lines (60 loc) · 2.25 KB
/
05_browser_text_uptime_agent.py
File metadata and controls
78 lines (60 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
"""
This example demonstrates how to use the @browser-text tool to fetch and analyze
uptime data from API status pages. It shows how to:
1. Use @browser-text to fetch status page content
2. Extract uptime percentage for specific services
3. Handle different status page formats
"""
import asyncio
from pydantic import BaseModel, Field # pyright: ignore [reportUnknownVariableType]
import workflowai
from workflowai import Model
class UptimeInput(BaseModel):
"""Input for checking API uptime."""
status_page_url: str = Field(
description="URL of the status page to check",
examples=["https://status.openai.com", "https://status.anthropic.com"],
)
service_name: str = Field(
description="Name of the specific API service to check",
examples=["API", "Chat Completions", "Embeddings"],
)
class UptimeOutput(BaseModel):
"""Output containing uptime percentage."""
uptime_percentage: float = Field(
description="The uptime percentage for the specified service over the last 30 days",
examples=[99.99, 98.5],
ge=0.0,
le=100.0,
)
@workflowai.agent(
id="uptime-checker",
model=Model.GPT_4O_MINI_LATEST,
)
async def check_uptime(uptime_input: UptimeInput, use_cache: str = "never") -> UptimeOutput:
"""
Fetch and analyze uptime data from an API status page.
Use @browser-text to get the page content.
Guidelines:
1. Visit the provided status page URL
2. Find the specified service's uptime information
3. Extract the most recent uptime percentage available
4. Return just the percentage as a number between 0 and 100
Focus on finding the most recent uptime data available.
This could be daily, weekly, monthly or any other time period shown.
"""
...
async def main():
# Example: Check OpenAI API uptime
uptime_input = UptimeInput(
status_page_url="https://status.openai.com",
service_name="API",
)
print(f"\nChecking uptime for {uptime_input.service_name} at {uptime_input.status_page_url}...")
print("-" * 50)
# Get uptime data with caching disabled
run = await check_uptime.run(uptime_input, use_cache="never")
# Print the run
print(run)
if __name__ == "__main__":
asyncio.run(main())