{"slug": "republic-0-6-0", "title": "Republic 0.6.0", "summary": "Republic 0.6.0 released as a Python library that provides one interface for chat, streaming, tool calls, and structured output across AI providers, requiring Python 3.11 or later and installed via `python -m pip install republic`. Models are addressed as `provider:model` (for example `openai:gpt-6-sol`, `anthropic:MODEL_ID`, `google:MODEL_ID`, or `deepseek:MODEL_ID`), with each provider's key read from a `REPUBLIC_<PROVIDER>_API_KEY` environment variable. The library stops at providers, leaving agent loops, tool execution, and gateways in the developer's own code, and offers an optional `Extension` interface for observing call outcomes and retries.", "body_md": "One Python interface for chat, streaming, tool calls, and structured output across AI providers. Republic stops at providers; agent loops, tool execution, and gateways stay in your code.\n\nRepublic requires Python 3.11 or later.\n\n```\npython -m pip install republic\nexport REPUBLIC_OPENAI_API_KEY=\"your-api-key\"\npython\nimport asyncio\n\nimport republic\nfrom republic.events import TextDelta\n\nasync def main():\n    model = republic.get_model(\"openai:gpt-6-sol\")\n\n    response = await model.chat(\"Explain a tool call in one sentence.\")\n    print(response.text)\n\n    async with model.stream(\"Explain how an agent uses a tool result.\") as stream:\n        async for event in stream:\n            if isinstance(event, TextDelta):\n                print(event.chunk, end=\"\", flush=True)\n\nasyncio.run(main())\n```\n\nA model is named `provider:model`. Switch services by changing the name, such as `anthropic:MODEL_ID`, `google:MODEL_ID`, or `deepseek:MODEL_ID`; each reads its key from `REPUBLIC_<PROVIDER>_API_KEY`. See the [provider directory](https://getrepublic.org/providers/) for every supported service.\n\n- [Quickstart](https://getrepublic.org/quickstart/) : a first request and a streaming response.\n- [Providers](https://getrepublic.org/providers/) : services, formats, and credentials.\n- [Authentication](https://getrepublic.org/guides/authentication/) : API keys, CLI logins, and OAuth.\n- Guides: [tool use](https://getrepublic.org/guides/tools/) ,[a minimal agent](https://getrepublic.org/guides/minimal-agent/) , and[structured output](https://getrepublic.org/guides/structured-output/) .\n- Reference: [configuration](https://getrepublic.org/reference/configuration/) and the[provider API](https://getrepublic.org/reference/provider-api/) , including media input, embeddings, image generation, decision models, history, and custom providers.\n- Optional [extensions](https://getrepublic.org/reference/configuration/#extensions) observe call outcomes and retries through one configurable`Extension` interface.\n\n```\nuv sync\nmake check\nmake test\nmake build\n```\n\nSee [Contributing](https://github.com/bubbuild/republic/blob/main/CONTRIBUTING.md) for the development workflow.", "url": "https://wpnews.pro/news/republic-0-6-0", "canonical_source": "https://github.com/bubbuild/republic", "published_at": "2026-10-20 15:31:58+00:00", "updated_at": "2026-10-20 15:47:02.112298+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "large-language-models", "ai-agents"], "entities": ["Republic", "Python", "OpenAI", "Anthropic", "Google", "DeepSeek"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/republic-0-6-0", "markdown": "https://wpnews.pro/news/republic-0-6-0.md", "text": "https://wpnews.pro/news/republic-0-6-0.txt", "jsonld": "https://wpnews.pro/news/republic-0-6-0.jsonld"}}