Я хочу извлечь и распечатать список моделей 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, но также позволяет мне извлечь список моделей?
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())