| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """Web Search Example
- This example shows how to:
- - search the web with `WebSearchTool`
- - limit results to trusted OpenAI domains
- - print the source URLs used during search
- Run:
- uv run python examples/web_search.py
- Requires OPENAI_API_KEY (or .env). Uses live API (network + usage).
- """
- import asyncio
- from openai.types.responses.web_search_tool import Filters
- from agency_swarm import Agency, Agent, WebSearchTool
- from agency_swarm.utils.citation_extractor import extract_web_search_sources
- async def main() -> None:
- print("Simple WebSearch Example")
- print("=" * 25)
- research_agent = Agent(
- name="ResearchAgent",
- model="gpt-5.4-mini",
- instructions=(
- "You are a helpful assistant. Search OpenAI resources only and return a short summary "
- "for developers in 3 bullet points."
- ),
- tools=[
- WebSearchTool(
- filters=Filters(
- allowed_domains=[
- "openai.com",
- "developer.openai.com",
- "platform.openai.com",
- "help.openai.com",
- ]
- ),
- search_context_size="medium",
- )
- ],
- )
- agency = Agency(research_agent, shared_instructions="Demonstrate web search with sources.")
- query = "What are 3 recent OpenAI platform updates for developers from the last few weeks?"
- print(f"\n❓ Query: {query}")
- response = await agency.get_response(query)
- print("\n### Final answer ###")
- print(response.final_output)
- source_urls = extract_web_search_sources(response)
- print("\n### Sources ###")
- if not source_urls:
- print("No source URLs were returned.")
- return
- for url in source_urls:
- print(f" - {url}")
- print(f"\nTotal sources: {len(source_urls)}")
- if __name__ == "__main__":
- asyncio.run(main())
|