189 lines
3.6 KiB
Markdown
189 lines
3.6 KiB
Markdown
# Migration from Assistants API v1 to v2
|
|
|
|
**v1 Deprecated**: December 18, 2024 (no longer accessible)
|
|
**v2 Status**: Production (Deprecated H1 2026 in favor of Responses API)
|
|
|
|
---
|
|
|
|
## Breaking Changes
|
|
|
|
### 1. Retrieval Tool → File Search
|
|
|
|
**v1:**
|
|
```typescript
|
|
{
|
|
tools: [{ type: "retrieval" }],
|
|
file_ids: ["file_abc123", "file_def456"]
|
|
}
|
|
```
|
|
|
|
**v2:**
|
|
```typescript
|
|
{
|
|
tools: [{ type: "file_search" }],
|
|
tool_resources: {
|
|
file_search: {
|
|
vector_store_ids: ["vs_abc123"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Action**: Create vector stores and migrate files.
|
|
|
|
### 2. File Attachments
|
|
|
|
**v1**: Files attached at assistant level
|
|
**v2**: Files attached at message level
|
|
|
|
**v1:**
|
|
```typescript
|
|
const assistant = await openai.beta.assistants.create({
|
|
file_ids: ["file_abc123"],
|
|
});
|
|
```
|
|
|
|
**v2:**
|
|
```typescript
|
|
await openai.beta.threads.messages.create(thread.id, {
|
|
content: "...",
|
|
attachments: [{
|
|
file_id: "file_abc123",
|
|
tools: [{ type: "code_interpreter" }]
|
|
}],
|
|
});
|
|
```
|
|
|
|
### 3. Instructions Character Limit
|
|
|
|
- **v1**: 32,000 characters
|
|
- **v2**: 256,000 characters (8x increase)
|
|
|
|
---
|
|
|
|
## Migration Steps
|
|
|
|
### Step 1: Create Vector Stores
|
|
|
|
```typescript
|
|
// Old v1 approach
|
|
const assistant = await openai.beta.assistants.create({
|
|
tools: [{ type: "retrieval" }],
|
|
file_ids: fileIds, // Direct attachment
|
|
});
|
|
|
|
// New v2 approach
|
|
const vectorStore = await openai.beta.vectorStores.create({
|
|
name: "Knowledge Base",
|
|
});
|
|
|
|
await openai.beta.vectorStores.fileBatches.create(vectorStore.id, {
|
|
file_ids: fileIds,
|
|
});
|
|
|
|
const assistant = await openai.beta.assistants.create({
|
|
tools: [{ type: "file_search" }],
|
|
tool_resources: {
|
|
file_search: {
|
|
vector_store_ids: [vectorStore.id],
|
|
},
|
|
},
|
|
});
|
|
```
|
|
|
|
### Step 2: Update File Attachments
|
|
|
|
```typescript
|
|
// Move file attachments from assistant to messages
|
|
await openai.beta.threads.messages.create(thread.id, {
|
|
role: "user",
|
|
content: "Analyze this file",
|
|
attachments: [{
|
|
file_id: "file_abc123",
|
|
tools: [{ type: "code_interpreter" }],
|
|
}],
|
|
});
|
|
```
|
|
|
|
### Step 3: Test Thoroughly
|
|
|
|
- Verify file search returns expected results
|
|
- Check Code Interpreter file handling
|
|
- Test streaming if used
|
|
- Validate function calling patterns
|
|
|
|
---
|
|
|
|
## New v2 Features
|
|
|
|
### 1. Massive File Capacity
|
|
|
|
- **v1**: ~20 files per assistant
|
|
- **v2**: 10,000 files per assistant (500x increase)
|
|
|
|
### 2. Better Search Performance
|
|
|
|
- Vector + keyword search
|
|
- Parallel query processing
|
|
- Advanced reranking
|
|
|
|
### 3. Auto-Expiration
|
|
|
|
```typescript
|
|
const vectorStore = await openai.beta.vectorStores.create({
|
|
expires_after: {
|
|
anchor: "last_active_at",
|
|
days: 30,
|
|
},
|
|
});
|
|
```
|
|
|
|
### 4. Batch File Operations
|
|
|
|
```typescript
|
|
const batch = await openai.beta.vectorStores.fileBatches.create(vectorStoreId, {
|
|
file_ids: ["file_1", "file_2", "file_3"],
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Cost Implications
|
|
|
|
### v1 (Deprecated)
|
|
- No separate storage costs for retrieval
|
|
|
|
### v2
|
|
- **Storage**: $0.10/GB/day for vector stores
|
|
- **Free tier**: First 1GB
|
|
- **Optimization**: Use auto-expiration
|
|
|
|
---
|
|
|
|
## Recommended Path Forward
|
|
|
|
**For existing v1 applications:**
|
|
1. Migrate to v2 immediately (v1 no longer works)
|
|
2. Plan migration to Responses API (v2 sunset in H1 2026)
|
|
|
|
**For new applications:**
|
|
- ✅ Use [Responses API](../../openai-responses/SKILL.md)
|
|
- ❌ Don't use Assistants API (being deprecated)
|
|
|
|
---
|
|
|
|
## Migration Checklist
|
|
|
|
- [ ] Update to openai SDK 6.7.0+
|
|
- [ ] Create vector stores for file search
|
|
- [ ] Migrate file attachments to message level
|
|
- [ ] Test file search results
|
|
- [ ] Update to `file_search` from `retrieval`
|
|
- [ ] Implement vector store cleanup
|
|
- [ ] Monitor storage costs
|
|
- [ ] Plan migration to Responses API
|
|
|
|
---
|
|
|
|
**Last Updated**: 2025-10-25
|