Skip to content

Commit 4e85ed4

Browse files
committed
feat: mock anthropic api
init commit. No tooluse or thinking support.
1 parent c07ec60 commit 4e85ed4

File tree

6 files changed

+1065
-0
lines changed

6 files changed

+1065
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import { Request, Response } from 'express';
2+
import {
3+
getModels,
4+
createMessage,
5+
createMessageStream
6+
} from '../services/anthropicService';
7+
import { MessagesRequest } from '../types/anthropic';
8+
9+
/**
10+
* Get model list
11+
*
12+
*/
13+
export function handleGetModels(req: Request, res: Response) {
14+
try {
15+
const models = getModels();
16+
res.json(models);
17+
} catch (error) {
18+
console.error('Get model list error:', error);
19+
res.status(500).json({
20+
error: {
21+
message: 'Internal server error',
22+
}
23+
})
24+
}
25+
}
26+
27+
/**
28+
* Handle Messages request
29+
*/
30+
export function handleMessage(req: Request, res: Response){
31+
try {
32+
const request: MessagesRequest = req.body;
33+
34+
// Basic validation
35+
if (!request.model || !request.messages) {
36+
return res.status(400).json({
37+
error: {
38+
message: "Invalid request",
39+
type: "invalid_request_error",
40+
},
41+
type: "error"
42+
})
43+
}
44+
45+
if(request.stream){
46+
res.setHeader('Content-Type', 'text/event-stream');
47+
res.setHeader('Cache-Control', 'no-cache');
48+
res.setHeader('Connection', 'keep-alive');
49+
res.setHeader('Access-Control-Allow-Origin', '*');
50+
res.setHeader('Access-Control-Allow-Headers', 'Cache-Control');
51+
52+
const stream = createMessageStream(request);
53+
for(const chunk of stream){
54+
res.write(chunk);
55+
}
56+
res.end();
57+
return;
58+
}
59+
60+
//Non-streaming response
61+
const response = createMessage(request);
62+
63+
//Check if it's an error response
64+
if ('error' in response) {
65+
return res.status(400).json(response);
66+
}
67+
68+
res.json(response);
69+
70+
71+
}catch (error) {
72+
console.error('Messages request error:', error);
73+
res.status(500).json({
74+
error:{
75+
message: 'Internal server error',
76+
type: 'api_error',
77+
code: 'internal_error'
78+
}
79+
})
80+
}
81+
}

0 commit comments

Comments
 (0)