{"id":19188805,"url":"https://github.com/miquido/draive","last_synced_at":"2026-03-17T16:16:37.938Z","repository":{"id":223868739,"uuid":"761696382","full_name":"miquido/draive","owner":"miquido","description":"All-in-one Python framework for building production-ready LLM agents and workflows. Developed by Miquido.","archived":false,"fork":false,"pushed_at":"2026-03-16T15:27:46.000Z","size":7731,"stargazers_count":109,"open_issues_count":2,"forks_count":12,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-03-17T02:34:37.501Z","etag":null,"topics":["ai","framework","genai","python"],"latest_commit_sha":null,"homepage":"https://www.miquido.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miquido.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-02-22T10:13:25.000Z","updated_at":"2026-03-07T16:56:26.000Z","dependencies_parsed_at":"2024-03-18T11:57:59.141Z","dependency_job_id":"f04943c1-f3c0-49ac-95c4-16194166630b","html_url":"https://github.com/miquido/draive","commit_stats":{"total_commits":188,"total_committers":9,"mean_commits":20.88888888888889,"dds":0.07446808510638303,"last_synced_commit":"8ceaacf27221ca80b643241fd05fcd235048309a"},"previous_names":["miquido/draive"],"tags_count":264,"template":false,"template_full_name":null,"purl":"pkg:github/miquido/draive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miquido%2Fdraive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miquido%2Fdraive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miquido%2Fdraive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miquido%2Fdraive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miquido","download_url":"https://codeload.github.com/miquido/draive/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miquido%2Fdraive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30626954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T14:16:03.965Z","status":"ssl_error","status_checked_at":"2026-03-17T14:16:03.380Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","framework","genai","python"],"created_at":"2024-11-09T11:26:05.685Z","updated_at":"2026-03-17T16:16:37.933Z","avatar_url":"https://github.com/miquido.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏎️ draive 🏁\n\n[![PyPI](https://img.shields.io/pypi/v/draive)](https://pypi.org/project/draive/)\n![Python Version](https://img.shields.io/badge/Python-3.13+-blue)\n![License](https://img.shields.io/badge/License-MIT-green)\n[![Docs](https://img.shields.io/badge/Documentation-yellow)](https://miquido.github.io/draive/)\n![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/miquido/draive?utm_source=oss\u0026utm_medium=github\u0026utm_campaign=miquido%2Fdraive\u0026labelColor=171717\u0026color=FF570A\u0026link=https%3A%2F%2Fcoderabbit.ai\u0026label=CodeRabbit+Reviews)\n\n🏎️ Build production-ready GenAI systems with strict typing, clean architecture, and fast iteration.\n\nDraive helps teams move from prompt experiments to dependable AI features:\ntyped outputs, tool orchestration, multimodal workflows, evaluation, guardrails, and observability\nin one cohesive framework.\n\nIf you want AI code that stays maintainable as your product grows, Draive is built for that.\n\n## ✨ Why teams pick Draive\n\n- **Typed by default**: generate validated `State` objects, not fragile string blobs.\n- **Reliable execution model**: `ctx.scope(...)` gives explicit state, dependency lifecycle, and\n    structured concurrency.\n- **Model portability**: swap providers without rewriting your business workflow.\n- **Real-world coverage**: tools, multimodal content, retrieval, evaluators, and guardrails are\n    first-class building blocks.\n- **Production visibility**: built-in hooks for logs, metrics, traces, and quality checks.\n\n## 🚀 Quick start\n\nHere’s what a simple Draive setup looks like:\n\n```python\nfrom draive import ctx, TextGeneration, tool\nfrom draive.openai import OpenAI, OpenAIResponsesConfig\n\n@tool # simply annotate a function as a tool\nasync def current_time(location: str) -\u003e str:\n    return f\"Time in {location} is 9:53:22\"\n\nasync with  ctx.scope( # create execution context\n    \"example\", # give it a name\n    OpenAIResponsesConfig(model=\"gpt-4o-mini\"), # prepare configuration\n    disposables=(OpenAI(),), # define resources and service clients available\n):\n    result: str = await TextGeneration.generate( # choose a right generation abstraction\n        instructions=\"You are a helpful assistant\", # provide clear instructions\n        input=\"What is the time in Kraków?\", # give it some input (including multimodal)\n        tools=[current_time], # and select any tools you like\n    )\n\n    print(result) # to finally get the result!\n    # output: The current time in Kraków is 9:53:22.\n```\n\nRead the [Draive Documentation](https://miquido.github.io/draive/) for all required knowledge.\n\nFor full examples, head over to the [Draive Examples](https://github.com/miquido/draive-examples)\nrepository.\n\n## ❓ What is Draive good for\n\nDraive is built for developers who want clarity, flexibility, and control when working with LLMs.\n\nWhether you’re building an autonomous agent, automating data flow, extracting information from\ndocuments, handling audio or images — Draive has your back.\n\n### What you can build with Draive\n\n- **🔁 Start with evaluation** - make sure your app behaves as expected, right from the start\n- **🛠 Turn any Python function into a tool** that LLMs can call\n- **🔄 Switch between providers** like OpenAI, Claude, Gemini, or Mistral in seconds\n- **🧱 Design structured workflows** with reusable `Step` and `StepState` pipelines\n- **🛡 Enforce output quality using guardrails** including moderation and runtime evaluation\n- **📊 Monitor with ease** - plug into any OpenTelemetry-compatible services\n- **⚙️ Control your context** - use on-the-fly LLM context modifications for best results\n\n### What makes Draive stand out\n\n- **Instruction Optimization**: Draive gives you clean ways to write and refine prompts, including\n    metaprompts, instruction helpers, and optimizers. You can go from raw prompt text to reusable,\n    structured config in no time.\n- **Composable Workflows**: Build modular flows using `Step`, tools, and context-scoped state.\n    Every piece is reusable, testable, and fits together cleanly.\n- **Tooling = Just Python**: Define a tool by writing a function. Annotate it. That’s it. Draive\n    handles the rest — serialization, context, and integration with LLMs.\n- **Structured Outputs** - decode to typed Python `State` models with schema-aware generation.\n- **Multimodal + Resource-Native**: Work with text, images, audio, files, and artifacts through one\n    content model.\n- **RAG Ready**: Built-in embeddings and `VectorIndex` utilities support retrieval-heavy workflows.\n- **Telemetry + Evaluators**: Measure timing, quality, tool usage, and regressions as part of CI.\n- **Model-Agnostic by Design**: Built-in support for major hosted and self-hosted providers.\n\n## 🖥️ Install\n\nWith pip:\n\n```bash\npip install draive\n```\n\n### Optional dependencies\n\nDraive library comes with optional integrations to 3rd party services:\n\n- OpenAI:\n\nUse OpenAI services client, including GPT, dall-e and embedding. Allows to use Azure services as\nwell.\n\n```bash\npip install 'draive[openai]'\n```\n\n- Anthropic:\n\nUse Anthropic services client, including Claude.\n\n```bash\npip install 'draive[anthropic]'\n```\n\n- Gemini:\n\nUse Google AIStudio services client, including Gemini.\n\n```bash\npip install 'draive[gemini]'\n```\n\n- Mistral:\n\nUse Mistral services client. Allows to use Azure services as well.\n\n```bash\npip install 'draive[mistral]'\n```\n\n- Cohere:\n\nUse Cohere services client.\n\n```bash\npip install 'draive[cohere]'\n```\n\n- Ollama:\n\nUse Ollama services client.\n\n```bash\npip install 'draive[ollama]'\n```\n\n- VLLM:\n\nUse VLLM services through OpenAI client.\n\n```bash\npip install 'draive[vllm]'\n```\n\n- Bedrock:\n\nUse AWS Bedrock-backed models.\n\n```bash\npip install 'draive[bedrock]'\n```\n\n- MCP:\n\nUse Model Context Protocol integrations.\n\n```bash\npip install 'draive[mcp]'\n```\n\n- OpenTelemetry:\n\nExport traces/metrics to your observability stack.\n\n```bash\npip install 'draive[opentelemetry]'\n```\n\n- Postgres:\n\nUse Postgres-backed persistence helpers.\n\n```bash\npip install 'draive[postgres]'\n```\n\n- Qdrant:\n\nUse Qdrant vector database integration.\n\n```bash\npip install 'draive[qdrant]'\n```\n\n## 👷 Contributing\n\nDraive is open-source and always growing — and we’d love your help.\n\nGot an idea for a new feature? Spotted a bug? Want to improve the docs or share an example? Awesome.\nOpen a PR or start a discussion — no contribution is too small!\n\nWhether you're fixing typos, building new integrations, or just testing things out and giving\nfeedback — you're welcome here.\n\n## Community \u0026 Support\n\n- Report issues and discuss ideas on [GitHub](https://github.com/miquido/draive/issues).\n- Learn more about the team behind Draive at [Miquido](https://miquido.com).\n\n**Built by [Miquido](https://miquido.com)**\n\n## License\n\nMIT License\n\nCopyright (c) 2024-2025 Miquido\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and\nassociated documentation files (the \"Software\"), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute,\nsublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial\nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT\nNOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES\nOR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiquido%2Fdraive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiquido%2Fdraive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiquido%2Fdraive/lists"}