Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
c36837f
deep
TimaxHack Jun 10, 2024
696e2ea
Update README-user.md
TimaxHack Jun 10, 2024
47bfafe
хранение в дипе
TimaxHack Jun 12, 2024
da293ea
хранение в дипе
TimaxHack Jun 12, 2024
1ccac95
хранение в дипе
TimaxHack Jun 12, 2024
05d1ed6
Update README-user.md
TimaxHack Jun 12, 2024
9a8fe6a
Update README-resale.md
TimaxHack Jun 12, 2024
75cd253
Update package.json
TimaxHack Jun 12, 2024
4427cb3
Update README.md
TimaxHack Jun 12, 2024
2d447d0
Update token-gen.js
TimaxHack Jul 21, 2024
3fefcbb
Update server.js
TimaxHack Jul 21, 2024
f84109b
Update dbManager.js
TimaxHack Jul 21, 2024
294b749
Update chatgpt.js
TimaxHack Jul 21, 2024
873d5b7
Create user_tokens.json
TimaxHack Jul 21, 2024
b9244f7
Update Dockerfile
TimaxHack Jul 21, 2024
c3e55b6
Update package.json
TimaxHack Jul 21, 2024
954e5af
Update server.js
TimaxHack Jul 21, 2024
502c7f6
Update chatgpt.js
TimaxHack Jul 21, 2024
713d3a4
Добавит функционал API
grigoriy-grisha Jul 22, 2024
d1c8a10
Merge pull request #1 from grigoriy-grisha/api
TimaxHack Jul 22, 2024
ff923fa
Добавит функционал обновления API токена
grigoriy-grisha Jul 23, 2024
30394c9
Merge pull request #2 from grigoriy-grisha/api
TimaxHack Jul 23, 2024
f707f84
Поправит функционал изменения токенов у админ токена
grigoriy-grisha Jul 23, 2024
fff4c73
Merge pull request #3 from grigoriy-grisha/api
TimaxHack Jul 23, 2024
c69b6fe
Поправит функционал изменения токенов у админ токена
grigoriy-grisha Jul 23, 2024
6eb0ad1
Поправит функционал изменения токенов у админ токена
grigoriy-grisha Jul 23, 2024
383a469
Merge pull request #4 from grigoriy-grisha/api
TimaxHack Jul 23, 2024
e9e0719
Поправит функционал изменения токенов у админ токена
grigoriy-grisha Jul 23, 2024
37685e4
Merge pull request #5 from grigoriy-grisha/api
TimaxHack Jul 23, 2024
cc91c22
Поправит функционал взаимодействия с API
grigoriy-grisha Jul 23, 2024
d7c0f81
Merge pull request #6 from grigoriy-grisha/api
TimaxHack Jul 23, 2024
8f449c0
Добавит новые модели
grigoriy-grisha Jul 25, 2024
95c6265
Merge pull request #7 from grigoriy-grisha/api
TimaxHack Jul 25, 2024
321ef2a
Добавит проверку на баланс
grigoriy-grisha Aug 21, 2024
2779648
Merge pull request #8 from grigoriy-grisha/api
TimaxHack Aug 22, 2024
8006420
Update completionsController.js
TimaxLacs Sep 7, 2024
0582777
Update rest.js
TimaxLacs Sep 7, 2024
52cb1d1
Добавит функционал реферальной программы
grigoriy-grisha Sep 15, 2024
a1c0e22
поправит функционал реферальной системы
grigoriy-grisha Sep 15, 2024
34cdfb7
Merge pull request #9 from grigoriy-grisha/api
TimaxHack Sep 15, 2024
077ea23
Доработает нейросеть под o1
grigoriy-grisha Sep 16, 2024
ffe8c37
Merge pull request #10 from grigoriy-grisha/api
TimaxHack Sep 16, 2024
4138fd4
Добавит логгирование
grigoriy-grisha Sep 18, 2024
7ddd927
Merge pull request #11 from grigoriy-grisha/api
TimaxHack Sep 18, 2024
2af6546
Поправит функционал изменения токенов у админ токена
grigoriy-grisha Sep 18, 2024
f8c1316
Merge pull request #12 from grigoriy-grisha/api
TimaxHack Sep 18, 2024
d719ce5
Поменяет апи
grigoriy-grisha Sep 18, 2024
ae71aab
Merge pull request #13 from grigoriy-grisha/api
TimaxHack Sep 18, 2024
e60a7bc
Поправит баг
grigoriy-grisha Sep 19, 2024
11120f4
Добавит claude модели
grigoriy-grisha Sep 19, 2024
5ead2df
Merge pull request #14 from grigoriy-grisha/api
TimaxHack Sep 19, 2024
e003a9f
синх
TimaxHack Sep 22, 2024
1938c06
Merge branch 'main' of https://github.com/TimaxHack/resale-chatgpt-azure
TimaxHack Sep 22, 2024
6d661d6
Добавит функционал ретраев при запросе нейронок
grigoriy-grisha Sep 24, 2024
0216e42
Поправит текст
grigoriy-grisha Sep 24, 2024
de223e2
Merge branch 'main' into api
grigoriy-grisha Sep 24, 2024
5bcb35c
Merge pull request #15 from grigoriy-grisha/api
TimaxHack Sep 24, 2024
1b6b4eb
Добавил папку в .gitignore
TimaxHack Sep 24, 2024
ab440ce
Create .gitignore
TimaxHack Sep 24, 2024
8e6c18a
Merge branch 'main' of https://github.com/TimaxHack/resale-chatgpt-azure
TimaxHack Sep 24, 2024
d7f7006
Добавит поддержку whisper
grigoriy-grisha Sep 24, 2024
8795014
Merge pull request #16 from grigoriy-grisha/api
TimaxHack Sep 24, 2024
a93ade6
убрал повторение сообщений при ошибке и сделал так, что контекстное с…
TimaxHack Sep 24, 2024
05a0c33
Поправит функционал транксрибации
grigoriy-grisha Sep 25, 2024
8312b38
Merge pull request #17 from grigoriy-grisha/api
TimaxHack Sep 25, 2024
fe13f8c
update o1 config and correct price model
TimaxHack Sep 27, 2024
4cc7bc8
correct last commit
TimaxHack Sep 27, 2024
5d5db7b
Добавит использование оригинального апи
grigoriy-grisha Sep 29, 2024
9ce19d5
Добавит новые claude модели
grigoriy-grisha Oct 2, 2024
bee04bf
Поправит llmsConfig.js
grigoriy-grisha Oct 2, 2024
229e45c
Поправит функционаЛ
grigoriy-grisha Oct 2, 2024
3580dd6
Поправит функционал stream
grigoriy-grisha Oct 4, 2024
d2e2016
Добавит функционал API для работы с токенами
grigoriy-grisha Oct 15, 2024
361ce0b
Поправит функционал stream с моделью o1
grigoriy-grisha Oct 16, 2024
182af0e
Добавит функционал Wizard моделей
grigoriy-grisha Oct 16, 2024
9137929
Поправит функционал stream
grigoriy-grisha Oct 17, 2024
b119e2c
Исправит снятие баланса при ошибке транскрпции
grigoriy-grisha Oct 22, 2024
1164d05
Поменяет функционал работы апи транскрипции
grigoriy-grisha Oct 23, 2024
8722370
Рефакторинг
grigoriy-grisha Nov 1, 2024
19d8da1
Поправит ошибки запуска
grigoriy-grisha Nov 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .gitignore
Empty file.
8 changes: 8 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = {
bracketSpacing: true,
singleQuote: false,
trailingComma: "all",
tabWidth: 2,
printWidth: 120,
endOfLine: "lf",
};
4 changes: 2 additions & 2 deletions Dockerfile
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "src/server.js" ]
EXPOSE 8080
CMD ["npm", "start"]
2 changes: 1 addition & 1 deletion README-resale.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,5 +81,5 @@ docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "<dateRest
```
Пример:
```bash
docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "2024-06-14" --userTokenLimit 150 --chatGptTokenLimit 150
docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "2024-06-14" --userTokenLimit 1500 --chatGptTokenLimit 1500
```
96 changes: 76 additions & 20 deletions README-user.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,97 @@
1. **Отправьте HTTP POST запрос** на адрес прокси, указав название вашего диалога и ваше сообщение. Пример кода на Python:

```python
import os
import requests

PROXY_URL = "http://173.212.230.201:8080/chatgpt" # Обновите на актуальный адрес прокси
TOKEN = "ваш_временный_токен_для_доступа" # Временный токен, предоставленный администратором прокси
DIALOG_NAME = "exampleDialog" # Название вашего диалога
USER_MESSAGE = "Привет, как тебя зовут?" # Ваше сообщение к ChatGPT
TOKEN_LIMIT = 1000 # Лимит токенов для диалога, необязательный параметр
SINGLE_MESSAGE = True # Режим вопрос-ответ: False - ведет диалог, True - только один запрос и ответ
# Настройки прокси-сервера и токенов
PROXY_URL_CHECK = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/tokens"
PROXY_URL_CHAT = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/chatgpt"
PROXY_URL_GENERATE = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/generate-token"
ADMIN_TOKEN = "246a07ec9c01e848b193aa3bc1f8c916" # Токен администратора из JSON файла

def query_chatgpt_via_proxy(dialog_name, message, token, token_limit=None, single_message=None):
USER_NAME = "exampleUser3" # Имя пользователя, для которого создается токен
USER_MESSAGE = "перескажи всю историю нашего с тобой диалога " # Ваше сообщение к ChatGPT
DIALOG_NAME = "44444" # Название вашего диалога
SYSTEM_MESSAGE = "You are chatting with an AI assistant. Please respond accordingly. ты можешь помнить всю историю диалога" # Пользовательское контекстное сообщение

USER_TOKEN_LIMIT = 11500 # Лимит токенов для пользователя
CHATGPT_TOKEN_LIMIT = 11500 # Лимит токенов для ChatGPT
TOKEN_LIMIT = 10000 # Лимит токенов для диалога
SINGLE_MESSAGE = False # Режим вопрос-ответ: True - только один запрос и ответ

def check_token_and_create_if_needed():
headers = {'Content-Type': 'application/json'}
payload = {
"token": ADMIN_TOKEN,
"userName": USER_NAME
}

# Проверка наличия токена
response = requests.get(PROXY_URL_CHECK, json=payload, headers=headers)
print(response)
if response.status_code == 200:
data = response.json()
if "tokens" in data:
print("Токен пользователя найден:", data["tokens"])
return True
else:
print("Токен не найден, создаем новый...")
return create_new_token()
else:
print(f"Ошибка при проверке токена: {response.text}")
return False

def create_new_token():
headers = {'Content-Type': 'application/json'}
payload = {
'token': token,
'dialogName': dialog_name,
'query': message,
"token": ADMIN_TOKEN,
"userName": USER_NAME,
"userTokenLimit": USER_TOKEN_LIMIT,
"chatGptTokenLimit": CHATGPT_TOKEN_LIMIT
}

if token_limit is not None:
payload['tokenLimit'] = token_limit
response = requests.post(PROXY_URL_GENERATE, json=payload, headers=headers)
if response.status_code == 200:
data = response.json()
print("Новый токен создан:", data["tokenId"])
return True
else:
print(f"Ошибка при создании токена: {response.text}")
return False

if single_message is not None:
payload['singleMessage'] = single_message
def query_chatgpt_via_proxy(user_name ,dialog_name, message, token, system_message_content='', token_limit=None, single_message=True):
print(single_message)
headers = {'Content-Type': 'application/json'}
payload = {
"token": token,
"query": message,
"dialogName": dialog_name,
"model": "gpt-4o",
"systemMessageContent": system_message_content,
"tokenLimit": token_limit,
"singleMessage": single_message,
"userNameToken": user_name
}

response = requests.post(PROXY_URL, json=payload, headers=headers)
response = requests.post(PROXY_URL_CHAT, json=payload, headers=headers)

if response.status_code == 200:
data = response.json()
print("Ответ ChatGPT:", data.get('response'))
print("Остаток токенов пользователя:", data.get('remainingTokens', {}).get('remainingUserTokens'))
print("Остаток токенов ChatGPT:", data.get('remainingTokens', {}).get('remainingChatGptTokens'))
print("Ответ ChatGPT:", data.get("response"))
print("Остаток токенов пользователя:", data.get("tokensUsed"))
print("Остаток токенов ChatGPT:", data.get("remainingTokens"))
else:
print(f"Ошибка: {response.text}")

# Пример вызова функции
query_chatgpt_via_proxy(DIALOG_NAME, USER_MESSAGE, TOKEN, TOKEN_LIMIT, SINGLE_MESSAGE)
# Основная логика
def main():
if check_token_and_create_if_needed():
query_chatgpt_via_proxy(USER_NAME, DIALOG_NAME, USER_MESSAGE, ADMIN_TOKEN, SYSTEM_MESSAGE, TOKEN_LIMIT, SINGLE_MESSAGE)


if __name__ == "__main__":
main()
```

### Параметры запроса:
Expand Down
112 changes: 87 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,25 @@ services:
Пример:
```yaml
version: '3.8'

services:
chatgpt_proxy:
build: .
container_name: chatgpt_proxy
ports:
- 8080:8080
- "8080:8080"
volumes:
- ./src/db:/usr/src/app/src/db
environment:
- AZURE_OPENAI_ENDPOINT=https://ai.openai.azure.com/
- AZURE_OPENAI_KEY=ca481182363434e3e63a3c1b06181
- AZURE_OPENAI_ENDPOINT=https://ai-west-us-3.openai.azure.com/
- AZURE_OPENAI_KEY=246a07ec9c01e848b193aa3bc1f8c916
- AZURE_OPENAI_KEY_TURBO=246a07ec9c01e848b193aa3bc1f8c916
- GPT_VERSION=2023-03-15-preview
- GPT_MODEL_NAME=gpt-4-128k
- GPT_MODEL_NAME=gpt-4o
- GQL_URN=3006-deepfoundation-dev-9tfkgfvdgr1.ws-eu114.gitpod.io/gql
- GQL_SSL=true
- GQL_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsiYWRtaW4iXSwieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS11c2VyLWlkIjoiMzgwIn0sImlhdCI6MTcxODAzNDg5Nn0.6ZP0luTrHSNK21mZu5LhvwsP1xvHzgInJJpW0NoTXr4
- SPACE_ID_ARGUMENT=2500
- PORT=8080
restart: unless-stopped
```
Expand All @@ -81,7 +87,7 @@ docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "<dateRest
```
Пример:
```bash
docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "2024-06-14" --userTokenLimit 150 --chatGptTokenLimit 150
docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "2024-06-14" --userTokenLimit 1500 --chatGptTokenLimit 1500
```


Expand All @@ -97,41 +103,97 @@ docker-compose exec chatgpt_proxy node scripts/token-gen.js --expires "2024-06-1
1. **Отправьте HTTP POST запрос** на адрес прокси, указав название вашего диалога и ваше сообщение. Пример кода на Python:

```python
import os
import requests

PROXY_URL = "http://173.212.230.201:8080/chatgpt" # Обновите на актуальный адрес прокси
TOKEN = "ваш_временный_токен_для_доступа" # Временный токен, предоставленный администратором прокси
DIALOG_NAME = "exampleDialog" # Название вашего диалога
USER_MESSAGE = "Привет, как тебя зовут?" # Ваше сообщение к ChatGPT
TOKEN_LIMIT = 1000 # Лимит токенов для диалога, необязательный параметр
SINGLE_MESSAGE = True # Режим вопрос-ответ: False - ведет диалог, True - только один запрос и ответ
# Настройки прокси-сервера и токенов
PROXY_URL_CHECK = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/tokens"
PROXY_URL_CHAT = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/chatgpt"
PROXY_URL_GENERATE = "https://8080-timaxhack-resalechatgpt-3ubkc4bx5ro.ws-eu114.gitpod.io/generate-token"
ADMIN_TOKEN = "246a07ec9c01e848b193aa3bc1f8c916" # Токен администратора из JSON файла

USER_NAME = "exampleUser3" # Имя пользователя, для которого создается токен
USER_MESSAGE = "перескажи всю историю нашего с тобой диалога " # Ваше сообщение к ChatGPT
DIALOG_NAME = "44444" # Название вашего диалога
SYSTEM_MESSAGE = "You are chatting with an AI assistant. Please respond accordingly. ты можешь помнить всю историю диалога" # Пользовательское контекстное сообщение

USER_TOKEN_LIMIT = 11500 # Лимит токенов для пользователя
CHATGPT_TOKEN_LIMIT = 11500 # Лимит токенов для ChatGPT
TOKEN_LIMIT = 10000 # Лимит токенов для диалога
SINGLE_MESSAGE = False # Режим вопрос-ответ: True - только один запрос и ответ

def query_chatgpt_via_proxy(dialog_name, message, token, token_limit=None, single_message=None):
def check_token_and_create_if_needed():
headers = {'Content-Type': 'application/json'}
payload = {
'token': token,
'dialogName': dialog_name,
'query': message,
"token": ADMIN_TOKEN,
"userName": USER_NAME
}

if token_limit is not None:
payload['tokenLimit'] = token_limit
# Проверка наличия токена
response = requests.get(PROXY_URL_CHECK, json=payload, headers=headers)
print(response)
if response.status_code == 200:
data = response.json()
if "tokens" in data:
print("Токен пользователя найден:", data["tokens"])
return True
else:
print("Токен не найден, создаем новый...")
return create_new_token()
else:
print(f"Ошибка при проверке токена: {response.text}")
return False

if single_message is not None:
payload['singleMessage'] = single_message
def create_new_token():
headers = {'Content-Type': 'application/json'}
payload = {
"token": ADMIN_TOKEN,
"userName": USER_NAME,
"userTokenLimit": USER_TOKEN_LIMIT,
"chatGptTokenLimit": CHATGPT_TOKEN_LIMIT
}

response = requests.post(PROXY_URL, json=payload, headers=headers)
response = requests.post(PROXY_URL_GENERATE, json=payload, headers=headers)
if response.status_code == 200:
data = response.json()
print("Новый токен создан:", data["tokenId"])
return True
else:
print(f"Ошибка при создании токена: {response.text}")
return False

def query_chatgpt_via_proxy(user_name ,dialog_name, message, token, system_message_content='', token_limit=None, single_message=True):
print(single_message)
headers = {'Content-Type': 'application/json'}
payload = {
"token": token,
"query": message,
"dialogName": dialog_name,
"model": "gpt-4o",
"systemMessageContent": system_message_content,
"tokenLimit": token_limit,
"singleMessage": single_message,
"userNameToken": user_name
}

response = requests.post(PROXY_URL_CHAT, json=payload, headers=headers)

if response.status_code == 200:
data = response.json()
print("Ответ ChatGPT:", data.get('response'))
print("Остаток токенов пользователя:", data.get('remainingTokens', {}).get('remainingUserTokens'))
print("Остаток токенов ChatGPT:", data.get('remainingTokens', {}).get('remainingChatGptTokens'))
print("Ответ ChatGPT:", data.get("response"))
print("Остаток токенов пользователя:", data.get("tokensUsed"))
print("Остаток токенов ChatGPT:", data.get("remainingTokens"))
else:
print(f"Ошибка: {response.text}")

# Пример вызова функции
query_chatgpt_via_proxy(DIALOG_NAME, USER_MESSAGE, TOKEN, TOKEN_LIMIT, SINGLE_MESSAGE)
# Основная логика
def main():
if check_token_and_create_if_needed():
query_chatgpt_via_proxy(USER_NAME, DIALOG_NAME, USER_MESSAGE, ADMIN_TOKEN, SYSTEM_MESSAGE, TOKEN_LIMIT, SINGLE_MESSAGE)


if __name__ == "__main__":
main()
```

### Параметры запроса:
Expand Down
Loading