{"id":15175667,"url":"https://github.com/mirascope/mirascope","last_synced_at":"2026-02-28T02:27:17.930Z","repository":{"id":213618622,"uuid":"727495773","full_name":"Mirascope/mirascope","owner":"Mirascope","description":"LLM abstractions that aren't obstructions","archived":false,"fork":false,"pushed_at":"2025-05-13T10:32:55.000Z","size":104203,"stargazers_count":1107,"open_issues_count":22,"forks_count":81,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-05-13T11:34:34.160Z","etag":null,"topics":["artificial-intelligence","developer-tools","function-calling","hacktoberfest","llm","llm-agent","llm-tools","prompt-engineering","pydantic-v2","python"],"latest_commit_sha":null,"homepage":"https://mirascope.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/Mirascope.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-05T01:22:34.000Z","updated_at":"2025-05-13T10:33:16.000Z","dependencies_parsed_at":"2024-05-30T19:22:42.219Z","dependency_job_id":"336fcb99-2ded-4d7d-be40-4573a2282ba9","html_url":"https://github.com/Mirascope/mirascope","commit_stats":{"total_commits":2193,"total_committers":32,"mean_commits":68.53125,"dds":0.6502507979936161,"last_synced_commit":"fee724b120f3dcce465edfec305de97dfecdafef"},"previous_names":["mirascope/mirascope"],"tags_count":147,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirascope%2Fmirascope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirascope%2Fmirascope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirascope%2Fmirascope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mirascope%2Fmirascope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mirascope","download_url":"https://codeload.github.com/Mirascope/mirascope/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254044373,"owners_count":22005148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["artificial-intelligence","developer-tools","function-calling","hacktoberfest","llm","llm-agent","llm-tools","prompt-engineering","pydantic-v2","python"],"created_at":"2024-09-27T12:39:51.354Z","updated_at":"2026-02-04T06:15:20.555Z","avatar_url":"https://github.com/Mirascope.png","language":"Python","funding_links":[],"categories":["Platforms"],"sub_categories":["Open Source Platforms"],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://mirascope.com/#mirascope\"\u003e\n        \u003cimg src=\"https://mirascope.com/icons/logo-with-text.png\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Mirascope/mirascope/actions/workflows/ci.yml\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/Mirascope/mirascope/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"Tests\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://app.codecov.io/github/Mirascope/mirascope\" target=\"_blank\"\u003e\u003cimg src=\"https://codecov.io/github/Mirascope/mirascope/graph/badge.svg?token=HAEAWT3KC9\" alt=\"Coverage\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/mirascope/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/mirascope.svg\" alt=\"PyPI Version\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/mirascope/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/mirascope.svg\" alt=\"Python Versions\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Mirascope/mirascope/blob/main/python/LICENSE\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Mirascope \n\nWelcome to Mirascope, which allows you to use any frontier LLM with one unified interface.\n\n## Quick Start\n\nInstall Mirascope:\n\n```bash\nuv add \"mirascope[all]\"\n```\n\n### Call LLMs with a Decorator\n\n```python\nfrom mirascope import llm\n\n\n@llm.call(\"anthropic/claude-sonnet-4-5\")\ndef recommend_book(genre: str):\n    return f\"Recommend a {genre} book.\"\n\n\nresponse = recommend_book(\"fantasy\")\nprint(response.text())\n```\n\n### Get Structured Output\n\n```python\nfrom pydantic import BaseModel\nfrom mirascope import llm\n\n\nclass Book(BaseModel):\n    title: str\n    author: str\n\n\n@llm.call(\"anthropic/claude-sonnet-4-5\", format=Book)\ndef recommend_book(genre: str):\n    return f\"Recommend a {genre} book.\"\n\n\nbook = recommend_book(\"fantasy\").parse()\nprint(f\"{book.title} by {book.author}\")\n```\n\n### Build an Agent with Tools\n\n```python\nfrom pydantic import BaseModel\nfrom mirascope import llm\n\n\nclass Book(BaseModel):\n    title: str\n    author: str\n\n\n@llm.tool\ndef get_available_books(genre: str) -\u003e list[Book]:\n    \"\"\"Get available books in the library by genre.\"\"\"\n    return [Book(title=\"The Name of the Wind\", author=\"Patrick Rothfuss\")]\n\n\n@llm.call(\"anthropic/claude-sonnet-4-5\", tools=[get_available_books], format=Book)\ndef librarian(request: str):\n    return f\"You are a librarian. Help the user: {request}\"\n\n\nresponse = librarian(\"I want a fantasy book\")\nwhile response.tool_calls:\n    response = response.resume(response.execute_tools())\nbook = response.parse()\nprint(f\"Recommending: {book.title} by {book.author}\")\n```\n\nFor streaming, async, multi-turn conversations, and more, see the [full documentation](https://mirascope.com/docs).\n\n## Monorepo Structure\n\nThis project is structured as a monorepo, that conceptually divides into four parts:\n\n- `python/` contains the Python implementation, and examples (in `python/examples`)\n- `typescript/` contains the Typescript implementation, and examples (in `typescript/examples`)\n- `cloud/` contains the full-stack cloud application (React frontend + Cloudflare Workers backend)\n- `docs/` contains the unified cross-language documentation (in `docs/content`), as well as configuration needed to build the docs\n\nFor detailed information about the codebase structure, architecture, and design decisions, see [`STRUCTURE.md`](STRUCTURE.md).\n\n## Developing the site\n\nUse `bun run cloud:dev` to launch the dev server.\n\nNote that [Bun](http://bun.sh/) must be installed.\n\n## CI and local testing\n\nWe currently have four CI jobs:\n- codespell: Checks for common misspellings including python, typescript, and docs repos\n- python-lint: Linting and typechecking for Python code\n- typescript-lint: Linting and typechecking for Typescript code\n- cloudflare docs build: Builds and previews the documentation site\n\nYou can run `bun run ci` in the root directory to run all CI checks locally. If adding new checks to GitHub CI, please also add it to the ci script in root `package.json` as well.\n\n## Versioning\n\nMirascope uses [Semantic Versioning](https://semver.org/).\n\n## License\n\nThis repository uses a multi-license structure:\n\n- **Default**: All code is licensed under the [MIT License](https://github.com/Mirascope/mirascope/tree/main/LICENSE) unless otherwise specified.\n- **Cloud Directory**: The `cloud/` directory is licensed under a proprietary license. See [`cloud/LICENSE`](cloud/LICENSE) for details.\n\nSubdirectories may contain their own LICENSE files that take precedence for files within those directories.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirascope%2Fmirascope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirascope%2Fmirascope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirascope%2Fmirascope/lists"}