> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 Models Lab 生成音乐

## 代码

```python theme={null}
import os
from uuid import uuid4

import requests
from agno.agent import Agent, RunResponse
from agno.models.openai import OpenAIChat
from agno.tools.models_labs import FileType, ModelsLabTools
from agno.utils.log import logger

agent = Agent(
    name="ModelsLab Music Agent",
    agent_id="ml_music_agent",
    model=OpenAIChat(id="gpt-4o"),
    show_tool_calls=True,
    tools=[ModelsLabTools(wait_for_completion=True, file_type=FileType.MP3)],
    description="你是一个可以使用 ModelsLabs API 生成音乐的 AI 代理。",
    instructions=[
        "生成音乐时，请使用 `generate_media` 工具，并提供详细的提示，指定：",
        "- 音乐的流派和风格（例如，古典、爵士、电子）",
        "- 要包含的乐器和声音",
        "- 节奏、情绪和情感特质",
        "- 结构（前奏、主歌、副歌、桥段等）",
        "创建丰富、描述性的提示，以捕捉所需的音乐元素。",
        "专注于生成高质量、完整的器乐作品。",
    ],
    markdown=True,
    debug_mode=True,
)

music: RunResponse = agent.run("生成一段 30 秒的古典音乐")

save_dir = "audio_generations"

if music.audio is not None and len(music.audio) > 0:
    url = music.audio[0].url
    response = requests.get(url)
    os.makedirs(save_dir, exist_ok=True)
    filename = f"{save_dir}/sample_music{uuid4()}.wav"
    with open(filename, "wb") as f:
        f.write(response.content)
    logger.info(f"音乐已保存到 {filename}")
```

## 用法

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="设置您的 API 密钥">
    ```bash theme={null}
    export OPENAI_API_KEY=xxx
    export MODELS_LAB_API_KEY=xxx
    ```
  </Step>

  <Step title="安装库">
    ```bash theme={null}
    pip install -U openai agno
    ```
  </Step>

  <Step title="运行 Agent">
    <CodeGroup>
      ```bash Mac theme={null}
      python cookbook/agent_concepts/multimodal/generate_music_agent.py
      ```

      ```bash Windows theme={null}
      python cookbook/agent_concepts/multimodal/generate_music_agent.py
      ```
    </CodeGroup>
  </Step>
</Steps>
