# Welcome to Mirascope v1 (legacy)
Mirascope is a powerful, flexible, and user-friendly library that simplifies the process of working with LLMs through a unified interface that works across various supported providers, including [OpenAI](https://openai.com/), [Anthropic](https://www.anthropic.com/), [Mistral](https://mistral.ai/), [Google (Gemini/Vertex)](https://googleapis.github.io/python-genai/), [Groq](https://groq.com/), [Cohere](https://cohere.com/), [LiteLLM](https://www.litellm.ai/), [Azure AI](https://azure.microsoft.com/en-us/solutions/ai), and [Bedrock](https://aws.amazon.com/bedrock/).
Whether you're generating text, extracting structured information, or developing complex AI-driven agent systems, Mirascope provides the tools you need to streamline your development process and create powerful, robust applications.
<div className="flex flex-col md:flex-row justify-center items-center gap-4 my-8 w-full px-4">
<ButtonLink href="/docs/v1/getting-started/why" className="w-full md:w-1/3 justify-center">
<Icon name="lightbulb" className="size-3.5" aria-hidden="true" /> Why Use Mirascope
</ButtonLink>
<ButtonLink href="https://mirascope.com/discord-invite" className="w-full md:w-1/3 justify-center">
<Icon name="users" className="size-3.5" aria-hidden="true" /> Join Our Community
</ButtonLink>
<ButtonLink href="https://github.com/Mirascope/mirascope" className="w-full md:w-1/3 justify-center">
<Icon name="github" className="size-3.5" aria-hidden="true" /> Star the Repo
</ButtonLink>
</div>
## Getting Started
Install Mirascope, specifying the provider you intend to use, and set your API key:
<InstallSnippet className="mt-4" />
## Mirascope API
Mirascope provides a consistent, easy-to-use API across all providers:
<TabbedSection showLogo={true}>
<Tab value="Shorthand">
```python
from mirascope import llm
from pydantic import BaseModel
class Book(BaseModel):
"""An extracted book."""
title: str
author: str
# [!code highlight:6]
@llm.call(
provider="$PROVIDER",
model="$MODEL",
response_model=Book
)
def extract_book(text: str) -> str:
return f"Extract {text}"
book: Book = extract_book("The Name of the Wind by Patrick Rothfuss") # [!code highlight]
print(book)
# Output: title='The Name of the Wind' author='Patrick Rothfuss' # [!code highlight]
```
</Tab>
<Tab value="Template">
```python
from mirascope import llm, prompt_template
from pydantic import BaseModel
class Book(BaseModel):
"""An extracted book."""
title: str
author: str
# [!code highlight:6]
@llm.call(
provider="$PROVIDER",
model="$MODEL",
response_model=Book
)
@prompt_template("Extract {text}")
def extract_book(text: str): ...
book: Book = extract_book("The Name of the Wind by Patrick Rothfuss") # [!code highlight]
print(book)
# Output: title='The Name of the Wind' author='Patrick Rothfuss' # [!code highlight]
```
</Tab>
</TabbedSection>
## Provider SDK Equivalent
For comparison, here's how you would achieve the same result using the provider's native SDK:
<Info title="Official SDK" collapsible={true}>
<ProviderCodeBlock
examplePath="v1/getting-started/quickstart/sdk"
/>
</Info>
If you'd like a more in-depth guide to getting started with Mirascope, check out our [quickstart guide](/docs/v1/guides/getting-started/quickstart/)
We're excited to see what you'll build with Mirascope, and we're here to help! Don't hesitate to reach out :)