К основному содержанию
скилл CX Codex

openai-api-development — скилл для Claude Code: OpenAI API в проекте

Скилл для разработки на OpenAI API: подсказывает, как писать вызовы GPT, function calling, эмбеддинги и Assistants API на Python.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill openai-api-development -a claude-code
Открыть на GitHub

Что делает openai-api-development

Скилл задаёт агенту роль эксперта по OpenAI API. Он держит в голове работу с моделями GPT, Assistants API, function calling и эмбеддингами, а ответы просит писать коротко и с примерами на Python. Все сигнатуры функций — с аннотациями типов, обработка ошибок и повторные попытки обязательны.

Внутри — готовые куски кода: клиент через OpenAI(api_key=os.environ.get("OPENAI_API_KEY")), стриминг ответов, описание инструментов для function calling и разбор tool_calls, создание ассистента с code_interpreter и file_search, генерация эмбеддингов через text-embedding-3-small. Отдельные разделы про vision, ретраи с экспоненциальной задержкой и оптимизацию расходов.

Ключ API скилл требует хранить в переменных окружения и в .env, а не в коде. Для локальной разработки упоминается python-dotenv. Если вы уже вынесли ключи в секреты CI, привычный способ всё равно придётся повторить: скилл настаивает на переменных окружения, иначе агент будет предлагать код, который вы потом переписываете.

Какие задачи решает

  • написать вызов chat completions с аннотациями типов
  • собрать обработку tool_calls и вернуть результат модели
  • сделать стриминг длинного ответа в консоль
  • вынести ключ API в переменные окружения
  • добавить повторные попытки при RateLimitError

Примеры запросов агенту

  • Напиши функцию на Python для вызова gpt-4o с обработкой ошибок
  • Покажи, как описать tools для function calling и обработать tool_calls
  • Сгенерируй эмбеддинги для списка текстов через text-embedding-3-small

Как установить openai-api-development

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill openai-api-development -a claude-code

2Вручную: положить файлы

~/.claude/skills/openai-api-development/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/openai-api-development/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора168

bash-scripting Скилл задаёт агенту правила написания Bash-скриптов: валидация ввода, обработка ошибок, переносимость. Пригодится, когда агент пишет деплой, бэкапы или cron-задачи. CX Codex +1 875установок swr Инструкции по настройке SWR в связке с React и TypeScript. Помогает агенту писать хуки для выборки, кеширования и мутаций данных. CX Codex +1 870установок django-rest-api-development Скилл задаёт агенту правила разработки REST API на Django: структура проекта, сериализаторы, JWT-аутентификация и работа с запросами к базе. CX Codex +1 868установок data-jupyter-python Задаёт агенту правила работы с pandas, numpy, matplotlib и seaborn: векторизация вместо циклов, воспроизводимые ноутбуки, аккуратные графики. CX Codex +1 865установок jest Скилл задаёт агенту правила написания тестов на Jest: структура, моки, ассерты, асинхронность. Пригодится, когда тесты в проекте пишет ИИ. CX Codex +1 864установок ruby-rails Скилл задаёт агенту правила разработки на Ruby on Rails: генераторы, ActiveRecord, Hotwire, фоновые задачи и тесты. Пригодится, когда проект уже на Rails или только заводится. CX Codex +1 862установок seo-best-practices Задаёт правила поисковой оптимизации для веб-приложений. Помогает настроить метатеги, разметку JSON-LD, рендеринг и показатели Core Web Vitals. CX Codex +1 858установок fastify-typescript Задаёт агенту соглашения по Fastify и TypeScript: схемы валидации, плагины, Prisma и тесты через Jest. Пригодится, когда пишете типизированный REST API. CX Codex +1 856установок

Похожие

openai-api-troubleshooting официальный OpenAI Классифицирует сбои при вызовах OpenAI API в Codex и подсказывает точное действие для исправления. Пригодится, когда запрос падает с сетевой ошибкой, 401, 403 или исчерпанным балансом. CX Codex GP ChatGPT 13установок qwencloud-text QwenCloud Скилл для работы с текстовыми моделями QwenCloud: генерация текста, диалоги, код и вызов функций. Пригодится, если нужно обращаться к Qwen или сторонним моделям прямо из агента. CX Codex +1 1 600установок grepai-embeddings-openai yoanbernabeu Скилл настраивает OpenAI как провайдер эмбеддингов для GrepAI: облачный индекс кода без локального сервера. Код при этом уходит на серверы OpenAI. CX Codex +1 553установок openai-whisper-api openclaw Скилл гоняет аудио через OpenAI Audio Transcriptions API и отдаёт текст или JSON. Пригодится, когда нужно расшифровать созвон или голосовую заметку прямо из агента. CX Codex +1 5 400установок graphql-api-development manutej Скилл для проектирования GraphQL API на graphql-js: схема, резолверы, запросы, мутации, подписки и авторизация. Пригодится, когда REST уже тесен. CX Codex +1 447установок openai-platform-api-key официальный OpenAI Проверяет доступ к ключу OpenAI перед работой с AI-приложением и помогает безопасно настроить OPENAI_API_KEY. Пригодится для проектов на API OpenAI. CX Codex GP ChatGPT 16установок

Рядом в теме «ИИ и ML»

Всё по теме «ИИ и ML» →

Вопросы о openai-api-development

Как установить Anthropic-api-development в Claude?

Выполните npx skills add Mindrally/skills --skill openai-api-development -a claude-code. Файл скилла появится по пути ~/.claude/skills/openai-api-development/SKILL.md.

Что делает openai-api-development?

Подсказывает агенту, как писать код под OpenAI API: вызовы моделей GPT, function calling, Assistants API, эмбеддинги, обработка ошибок и работа с ключами.

Нужен ли ключ OpenAI для работы скилла?

Да, код в примерах обращается к API. Ключ скилл советует держать в переменной окружения OPENAI_API_KEY или в .env, а не в исходниках.

Исходный текст

SKILL.md · Apache-2.0
---
name: openai-api-development
description: Expert guidance for OpenAI API development including GPT models, Assistants API, function calling, embeddings, and best practices for production applications.
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# OpenAI API Development

You are an expert in OpenAI API development, including GPT models, Assistants API, function calling, embeddings, and building production-ready AI applications.

## Key Principles

- Write concise, technical responses with accurate Python examples
- Use type hints for all function signatures
- Implement proper error handling and retry logic
- Never hardcode API keys; use environment variables
- Follow OpenAI's usage policies and rate limit guidelines

## Setup and Configuration

### Environment Setup

```python
import os
from openai import OpenAI

# Always use environment variables for API keys
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
```

### Best Practices

- Store API keys in `.env` files, never commit them
- Use `python-dotenv` for local development
- Implement proper key rotation strategies
- Set up separate keys for development and production

## Chat Completions API

### Basic Usage

```python
from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ],
    temperature=0.7,
    max_tokens=1000
)

message = response.choices[0].message.content
```

### Streaming Responses

```python
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
```

### Model Selection

- Use `gpt-4o` for complex reasoning and multimodal tasks
- Use `gpt-4o-mini` for faster, cost-effective responses
- Use `o1` models for advanced reasoning tasks
- Consider `gpt-3.5-turbo` for simple tasks requiring speed

## Function Calling

### Defining Functions

```python
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City and state, e.g., San Francisco, CA"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "Temperature unit"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    tools=tools,
    tool_choice="auto"
)
```

### Handling Tool Calls

```python
import json

def process_tool_calls(response, messages):
    tool_calls = response.choices[0].message.tool_calls

    if tool_calls:
        messages.append(response.choices[0].message)

        for tool_call in tool_calls:
            function_name = tool_call.function.name
            function_args = json.loads(tool_call.function.arguments)

            # Execute the function
            result = execute_function(function_name, function_args)

            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps(result)
            })

        # Get final response
        return client.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            tools=tools
        )

    return response
```

## Assistants API

### Creating an Assistant

```python
assistant = client.beta.assistants.create(
    name="Data Analyst",
    instructions="You are a data analyst. Analyze data and provide insights.",
    tools=[
        {"type": "code_interpreter"},
        {"type": "file_search"}
    ],
    model="gpt-4o"
)
```

### Managing Threads

```python
# Create a thread
thread = client.beta.threads.create()

# Add a message
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="Analyze this data..."
)

# Run the assistant
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id
)

# Get messages
if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
```

## Embeddings

### Generating Embeddings

```python
response = client.embeddings.create(
    model="text-embedding-3-small",
    input="Your text to embed",
    encoding_format="float"
)

embedding = response.data[0].embedding
```

### Best Practices for Embeddings

- Use `text-embedding-3-small` for cost-effective solutions
- Use `text-embedding-3-large` for maximum accuracy
- Batch requests for efficiency (up to 2048 inputs)
- Cache embeddings to avoid redundant API calls
- Use appropriate dimensions parameter for storage optimization

## Vision and Multimodal

### Image Analysis

```python
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What's in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg",
                        "detail": "high"
                    }
                }
            ]
        }
    ]
)
```

## Error Handling

### Retry Logic

```python
from openai import RateLimitError, APIError
import time

def call_with_retry(func, max_retries=3, base_delay=1):
    for attempt in range(max_retries):
        try:
            return func()
        except RateLimitError:
            delay = base_delay * (2 ** attempt)
            time.sleep(delay)
        except APIError as e:
            if attempt == max_retries - 1:
                raise
            time.sleep(base_delay)
    raise Exception("Max retries exceeded")
```

### Common Error Types

- `RateLimitError`: Implement exponential backoff
- `APIError`: Check API status, retry with backoff
- `AuthenticationError`: Verify API key
- `InvalidRequestError`: Validate input parameters

## Cost Optimization

- Use appropriate models for task complexity
- Implement token counting before requests
- Use streaming for long responses
- Cache responses when appropriate
- Set reasonable `max_tokens` limits
- Use batch API for non-time-sensitive requests

## Security Best Practices

- Never expose API keys in client-side code
- Implement rate limiting on your endpoints
- Validate and sanitize user inputs
- Use content moderation for user-generated content
- Log API usage for monitoring and auditing

## Dependencies

- openai
- python-dotenv
- tiktoken (for token counting)
- pydantic (for input validation)
- tenacity (for retry logic)

© Mindrally · Apache-2.0 · Mindrally/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой