dspy-adapters-multimodal — скилл для Claude Code
Скилл помогает выбирать адаптеры DSPy для структурированных ответов, вызова функций и работы с изображениями, аудио и файлами. Пригодится при разработке ИИ-приложений на DSPy.
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a claude-codeЧто делает dspy-adapters-multimodal
Скилл объясняет, как выбирать адаптер DSPy под формат ответа и возможности языковой модели. ChatAdapter подходит для обычного текстового взаимодействия, JSONAdapter помогает получать структурированные данные и использовать нативный вызов функций, а XMLAdapter организует поля через XML-разметку. Для извлечения данных в отдельном проходе предусмотрен TwoStepAdapter.
В примерах показаны глобальная настройка через dspy.configure() и локальное переключение адаптера с помощью dspy.context(). Скилл также разбирает типизированные входы dspy.Image, dspy.Audio и dspy.File: с их помощью модель получает изображение, аудиозапись или документ. Например, dspy.Image(...) принимает локальный путь, HTTP URL, байты или изображение PIL.
Поведение зависит от выбранной модели. Если языковая модель не поддерживает нативный вызов функций, DSPy переключается на ручной разбор. Перед развёртыванием нужно проверить поддержку нужного типа медиа конкретным провайдером; устаревшие методы Image.from_file() и Image.from_url() заменены прямым вызовом dspy.Image(...).
Какие задачи решает
- Выбрать адаптер DSPy для JSON-ответов
- Настроить XML-разметку полей предсказания
- Передать изображение в запрос модели
- Получить сводку аудиозаписи или PDF
- Обработать вызов функций при отсутствии нативной поддержки
Примеры запросов агенту
- Настрой
JSONAdapterдля получения структурированного ответа от модели. - Покажи, как передать
./diagram.pngвdspy.Image(...)и получить описание изображения. - Составь пример с
dspy.Audio.from_file("./meeting.wav")для создания краткой сводки встречи.
Как установить dspy-adapters-multimodal
1Через Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a claude-code2Вручную: положить файлы
~/.claude/skills/dspy-adapters-multimodal/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/dspy-adapters-multimodal/
1Через Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a codex2Вручную: положить файлы
.agents/skills/dspy-adapters-multimodal/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a cursor2Вручную: положить файлы
.cursor/skills/dspy-adapters-multimodal/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install OmidZamani/dspy-skills dspy-adapters-multimodal2Вручную: положить файлы
.github/skills/dspy-adapters-multimodal/SKILL.md1Через Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a gemini-cli2Командой платформы
gemini skills install https://github.com/OmidZamani/dspy-skills --path skills/dspy-adapters-multimodalВручную: положить файлы
.devin/skills/dspy-adapters-multimodal/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о dspy-adapters-multimodal
Как установить dspy-adapters-multimodal в Claude Code?
Выполни npx skills add OmidZamani/dspy-skills --skill dspy-adapters-multimodal -a claude-code. Файл скилла будет доступен по пути ~/.claude/skills/dspy-adapters-multimodal/SKILL.md.
Что делает dspy-adapters-multimodal?
Скилл помогает выбрать адаптер DSPy и описать мультимодальные входы через типизированные примитивы. Он охватывает структурированные ответы, вызов функций и обработку изображений, аудио и файлов.
Какие адаптеры DSPy разбирает скилл?
Он рассматривает ChatAdapter, JSONAdapter, XMLAdapter и TwoStepAdapter. Выбор зависит от нужного формата и поведения модели; поддержку нативного вызова функций и медиа нужно проверять на целевой модели.
Исходный текст
SKILL.md · MIT
---
name: dspy-adapters-multimodal
version: "1.0.0"
dspy-compatibility: "3.2.1"
tags: ["multimodal"]
requires-extras: []
description: Use for DSPy adapter selection, JSONAdapter, XMLAdapter, ChatAdapter, native function calling, structured outputs, and multimodal inputs like dspy.Image or dspy.Audio.
allowed-tools:
- Read
- Write
- Glob
- Grep
---
# DSPy Adapters and Multimodal I/O
## Goal
Choose an adapter deliberately and model image, audio, and file inputs with DSPy's typed primitives.
## Adapter Selection
| Adapter | Use it for |
|---------|------------|
| `dspy.ChatAdapter()` | Default, human-readable field markers, broad model compatibility |
| `dspy.JSONAdapter()` | Structured JSON output and native function calling where supported |
| `dspy.XMLAdapter()` | XML-tagged fields when XML is easier for the target LM to follow |
| `dspy.TwoStepAdapter()` | A separate extraction pass when parsing needs extra help |
Configure globally or for a limited scope:
```python
import dspy
dspy.configure(
lm=dspy.LM("openai/gpt-4o-mini"),
adapter=dspy.JSONAdapter(),
)
with dspy.context(adapter=dspy.XMLAdapter()):
result = dspy.Predict("question -> answer")(question="What is DSPy?")
```
## Native Function Calling
`JSONAdapter` enables native function calling by default. `ChatAdapter` keeps text parsing by default. Override either behavior explicitly:
```python
chat_native = dspy.ChatAdapter(use_native_function_calling=True)
json_manual = dspy.JSONAdapter(use_native_function_calling=False)
```
DSPy falls back to manual parsing when the configured LM does not support native function calling.
## Image Inputs
```python
class DescribeImage(dspy.Signature):
image: dspy.Image = dspy.InputField()
description: str = dspy.OutputField()
describe = dspy.Predict(DescribeImage)
result = describe(image=dspy.Image("./diagram.png"))
```
Pass a local path, HTTP URL, bytes, PIL image, or existing data URI directly to `dspy.Image(...)`.
## Audio and File Inputs
```python
class SummarizeAudio(dspy.Signature):
audio: dspy.Audio = dspy.InputField()
summary: str = dspy.OutputField()
audio = dspy.Audio.from_file("./meeting.wav")
summary = dspy.Predict(SummarizeAudio)(audio=audio)
```
```python
class SummarizeFile(dspy.Signature):
file: dspy.File = dspy.InputField()
summary: str = dspy.OutputField()
document = dspy.File.from_path("./research.pdf")
summary = dspy.Predict(SummarizeFile)(file=document)
```
Provider capabilities vary. Verify that the selected model accepts the media type before deployment.
## Best Practices
1. Start with `ChatAdapter`; switch only for a measured reason.
2. Use typed signatures for structured output.
3. Test adapter behavior against the exact production model.
4. Avoid deprecated `Image.from_file()` and `Image.from_url()` helpers; call `dspy.Image(...)`.
5. Keep local file handling and uploaded file IDs within provider policy.
## Related Skills
- Design signatures: [dspy-signature-designer](../dspy-signature-designer/SKILL.md)
- Build tool agents: [dspy-react-agent-builder](../dspy-react-agent-builder/SKILL.md)
## Official Documentation
- **Adapters guide**: https://dspy.ai/learn/programming/adapters/
- **Tools guide**: https://dspy.ai/learn/programming/tools/
- **XMLAdapter API**: https://dspy.ai/api/adapters/XMLAdapter/
- **Image API**: https://dspy.ai/api/primitives/Image/
- **Audio API**: https://dspy.ai/api/primitives/Audio/
© OmidZamani · MIT · OmidZamani/dspy-skills