UNPKG

deepseek-api

Version:

Simple api for accessing deepseek free api

276 lines (196 loc) 7.33 kB
# DeepSeek API DeepSeek API is a powerful Node.js library designed to interact with DeepSeek's chat system. With this library, you can create chat sessions, send messages, and handle chat streams efficiently. ## Installation To install the DeepSeek API package, use the following command: ```bash npm install deepseek-api ``` ## Core Features - **Send Messages**: Interact with DeepSeek chats by sending messages. - **Chat Streams**: Stream responses in real-time. - **Chat Management**: Create and manage chat sessions. - **Structured Data**: Well-formatted response objects for easy integration. ## Important Note DeepSeek uses Cloudflare for changing IPs, which might cause issues when using this API server-side with tokens obtained from your browser. We are actively working on a workaround solution to address this. ## API Reference ### Importing the Library ```javascript import { sendMessage, createNewChat, chats } from 'deepseek-api'; ``` ### Functions #### `createNewChat(token: string, id?: string): Promise<string | { error: string }>` Creates a new chat session and stores its details in the `chats` map. - **Parameters**: - `token` (string): The authentication token for DeepSeek. - `id` (string, optional): A custom chat ID. If not provided, the original ID from DeepSeek will be used. - **Returns**: - A promise that resolves to the chat ID or an error object. - **Example**: ```javascript const chatID = await createNewChat('your-token-here'); console.log(`Chat created with ID: ${chatID}`); ``` #### `sendMessage(text: string, chat: { id: string; token: string; parent_id?: string }, callback: Function): Promise<any>` Sends a message to the specified chat session and streams the response. - **Parameters**: - `text` (string): The message to send. - `chat` (object): The chat details, including: - `id` (string): The chat session ID. - `token` (string): The authentication token. - `parent_id` (string, optional): The ID of the message to reply to (defaults to the last message in the chat). - `callback` (Function): A callback function to process each chunk of the response. - **Returns**: - A promise that resolves to the final response data or an error object. - **Example**: ```javascript await sendMessage('Hello, DeepSeek!', { id: 'chat-id-here', token: 'your-token-here' }, (chunk) => { console.log('Stream chunk:', chunk); }); ``` #### `chats` A `Map` object that stores all chat details, indexed by their IDs. Each chat entry includes: - `id`: The chat session ID. - `token`: The authentication token. - `cookies`: Any associated cookies (currently `null`). ### Utility Functions #### `requestChatStream(payload: object, text: string): Promise<any>` Initiates a chat stream request. #### `streamResponse(response: any, callback: Function): Promise<any>` Processes a streaming response, invoking the callback for each chunk. ## Authentication To authenticate with DeepSeek: 1. Log in to DeepSeek Chat. 2. Retrieve the token using the browser's console: ```javascript localStorage.getItem('userToken'); ``` The token will look like this: ```json {"value":"your-token-here","__version":"0"} ``` 3. Use the `value` field from the token object as your authentication token. ## Usage Example Here is a complete example of creating a chat session and sending a message: ```javascript import { createNewChat, sendMessage } from 'deepseek-api'; (async () => { const token = 'your-token-here'; // Step 1: Create a new chat session const chatID = await createNewChat(token); if (typeof chatID === 'string') { console.log(`Chat session created: ${chatID}`); // Step 2: Send a message await sendMessage('Hello, DeepSeek!', { id: chatID, token: token }, (chunk) => { console.log('Response chunk:', chunk); }); } else { console.error('Error creating chat session:', chatID.error); } })(); ``` ## Error Handling - Ensure that the chat ID is valid and registered in the `chats` map before sending a message. - Check that the token is correctly retrieved and passed to the functions. ## License This project is licensed under the MIT License. See the LICENSE file for details. ## Future Development This package currently retrieves raw JSON responses directly from the DeepSeek API. We are actively working on enhancing the library to parse this data and provide a user-friendly interface that mimics a real chat experience. Stay tuned for updates! ## Contributions Contributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/hydralerne/deepseek-api/issues). ## Response Format The library now provides structured response objects for different types of messages: ### Message Response ```javascript { type: 'message', content: 'The message content', id: 'message-id', role: 'assistant', metadata: { model: 'model-name', usage: { /* token usage stats */ }, finish_reason: 'stop' }, timestamp: '2024-01-01T00:00:00.000Z' } ``` ### Other Response Types ```javascript // Done Response { type: 'done', timestamp: '2024-01-01T00:00:00.000Z' } // Error Response { type: 'error', error: 'error_type', details: 'Error details', timestamp: '2024-01-01T00:00:00.000Z' } // Thinking State { type: 'thinking', status: 'thinking_status', timestamp: '2024-01-01T00:00:00.000Z' } // Search Results { type: 'search', results: [/* search results */], timestamp: '2024-01-01T00:00:00.000Z' } ``` ## Enhanced Usage Example Here's how to use the enhanced parsing features: ```javascript import { createNewChat, sendMessage } from 'deepseek-api'; (async () => { const token = 'your-token-here'; const chatID = await createNewChat(token); if (typeof chatID === 'string') { await sendMessage('Write a JavaScript function', { id: chatID, token: token }, (response) => { switch(response.type) { case 'message': console.log('Content:', response.content); break; case 'thinking': console.log('AI is thinking...'); break; case 'error': console.error('Error:', response.error); break; case 'done': console.log('Response complete'); break; } }); } })(); ``` ## Parsing Features ### Code Block Parsing - Automatically extracts code blocks from messages - Identifies programming languages - Separates code from regular text ### Metadata - Model information - Token usage statistics - Completion status - Timestamps for all events ### Response Types - `message`: Regular message content - `thinking`: AI processing status - `search`: Search results when enabled - `error`: Error information - `done`: Completion indicator ---