Oobabooga-textgen-web-ui, как получить авторизацию для просмотра списка моделей с порта 5000 через API-ключ ooba в Python

Я хочу извлечь и распечатать список моделей llm из oobabooga-text-gen-web-ui в python.

Прежде чем я перейду к своей проблеме, сначала немного контекста.

Для тех, кто знаком с тем, что ooba — это, по сути, веб-интерфейс Gradio для больших языковых моделей.

Я скачал и загрузил несколько моделей llm в этот веб-интерфейс. Веб-интерфейс использует http://127.0.0.1:7860/ для отображения веб-интерфейса пользователя через порт 7860. Но если я включу расширения openai и api, а также отредактирую CMD_FLAGS.txt в папке ooba примерно так:

--listen --api --api-key "enter-your-fake-api-key-here" 

расширения будут имитировать ключ API Open AI, подключаясь к ooba из сети через порт 5000.

Вот и проблема...

это мой код для просмотра списка моделей из ooba:

import requests

url = "http://127.0.0.1:5000/v1"

#Model List
headers = {
    "Content-Type": "application/json"
}

response = requests.get(f'{url}/internal/model/list',
                        headers=headers,
                        verify=False)
print(response.json())

вывод должен выглядеть примерно так:

{'model_names': ['L3-8B-Stheno-v3.2', 'L3-8B-Stheno-v3.2_exl2_8h_8bpw', 'L3-8B-Stheno-v3.2_q8_0.gguf', 'MixTAO-7Bx2-MoE-v8.1_q8_0.gguf']}

но вместо этого я получил это:

{'detail': 'Unauthorized'}

После некоторых возни я обнаружил, что если я оставлю CMD_FLAGS.txt пустым, код будет работать как задумано, и я получу списки моделей, но у меня не будет доступа к ключу API, поскольку он не включен на ooba.

если я включу его с помощью CMD_FLAGS.txt и наберу:

--listen --api --api-key "enter-your-fake-api-key-here" 

У меня будет доступ к ключу API openai, но код для извлечения списка моделей вернется как: {'detail': 'Unauthorized'}

Мне нужен ключ API, включенный из ooba, потому что я планирую использовать функцию openai.client для взаимодействия с моделью. Как сохранить конфигурацию, которая позволяет использовать поддельный ключ открытого API API, но также позволяет мне извлечь список моделей?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

1 день спустя... Нашел ответ. Оказывается, если я хочу, чтобы ключ API был включен, а также имел возможность просматривать список моделей из ooba через API, мне нужно добавить 'Authorization': f'Bearer {api_key}' в заголовок.

Код должен выглядеть примерно так:

import requests

api_key = "enter-your-fake-api-key-here"
url = "http://127.0.0.1:5000/v1"

#Model List
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

response = requests.get(f'{url}/internal/model/list',
                        headers=headers,
                        verify=False)
print(response.json())

Другие вопросы по теме