Как получить доступ к списку чатов Threads в ChatGPT?

How can I make a GET request to https://api.openai.com/v1/threads with a session key in a browser environment, as the current request with key type "secret" is not supported?
  • 9 февраля 2024 г. 10:19
Ответы на вопрос 1
Чтобы делать запросы к API OpenAI из браузера, вы обычно должны использовать ключи типа "secret", но внедрение этих ключей напрямую в фронтенд небезопасно, так как это может позволить недобросовестным пользователям использовать ваш ключ. Поэтому работа с API напрямую из браузера не рекомендуется.

Вместо этого правильный способ использовать API OpenAI заключается в создании серверного прокси, который будет общаться с API OpenAI и использовать ваш секретный ключ API, скрывая его от клиентского браузера. Этот серверный прокси может быть реализован на различных платформах, таких как Node.js, Python с Flask или Django, Ruby on Rails и др.

Вот базовый пример того, как это можно сделать с использованием Node.js и Express:

```javascript
const express = require('express');
const fetch = require('node-fetch');
const app = express();

const OPENAI_API_URL = 'https://api.openai.com/v1/threads';
const OPENAI_SECRET_KEY = 'your-secret-api-key';

app.use(express.json());

app.get('/api/threads', async (req, res) => {
    try {
        const response = await fetch(OPENAI_API_URL, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${OPENAI_SECRET_KEY}`,
            },
        });

        if (!response.ok) {
            throw new Error('Сетевой ответ был не ok.');
        }

        const data = await response.json();
        res.status(200).json(data);
    } catch (error) {
        res.status(500).json({ message: error.message });
    }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});
```

Этот сервер будет принимать GET-запросы по пути `/api/threads` и проксировать их к API OpenAI, скрывая ваш секретный ключ от пользователей браузера.

После того как сервер будет настроен, вы можете сделать запрос к этому пути с клиентской строны, используя JavaScript:

```javascript
fetch('/api/threads')
   .then(response => response.json())
   .then(data => console.log(data))
   .catch(error => console.error('Error:', error));
```

Обратите внимание, что вам нужно будет определить политики CORS на вашем сервере, если вы собираетесь делать запросы к серверу не с origin-хоста.
Похожие вопросы