我想从 oobabooga-text-gen-web-ui 中提取并打印出大语言模型(LLM)的列表,使用 Python 进行操作。
在进入我的问题之前,先提供一些背景信息。
对于熟悉 ooba 的人来说,它本质上是一个用于大语言模型的 Gradio 网页用户界面。
我下载并加载了一些 LLM 模型到这个网页界面上。网页界面使用 http://127.0.0.1:7860/ 在 7860 端口上显示网页用户界面。但是,如果我启用了 openai
和 api
扩展,并且编辑 ooba 文件夹中的 CMD_FLAGS.txt 文件,使其内容类似于:
--listen --api --api-key "enter-your-fake-api-key-here"
这些扩展将通过端口 5000 从网络连接到 ooba,从而模拟一个 OpenAI API 密钥。
现在问题来了…
这是我查看 ooba 模型列表的代码:
import requestsurl = "http://127.0.0.1:5000/v1"#Model Listheaders = { "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 留空,代码可以正常工作,我可以获取模型列表,但由于 ooba 上没有启用 API 密钥,我无法访问 API 密钥。
如果我在 CMD_FLAGS.txt 中启用它并输入:
--listen --api --api-key "enter-your-fake-api-key-here"
我将可以访问 OpenAI API 密钥,但提取模型列表的代码会返回:{'detail': 'Unauthorized'}
我需要从 ooba 启用 API 密钥,因为我计划使用 openai.client 功能进行模型交互。我该如何保持启用假 OpenAI API 密钥的配置,同时也允许我提取模型列表呢?
回答:
一天后…找到了答案。原来,如果我想启用 API 密钥,同时能够通过 API 从 ooba 查看模型列表,我需要在头部添加一个 'Authorization': f'Bearer {api_key}'
。
代码应该看起来像这样:
import requestsapi_key = "enter-your-fake-api-key-here"url = "http://127.0.0.1:5000/v1"#Model Listheaders = { "Content-Type": "application/json", "Authorization": f"Bearer {api_key}"}response = requests.get(f'{url}/internal/model/list', headers=headers, verify=False)print(response.json())