- Curl如何构造OpenAI格式API请求的
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $API-key" \
-d '{
"model": "gemini-2.0-flash",
"messages": [{"role": "user", "content": "linux.do是一个什么样的社区"}],
"temperature": 0.7
}' https://api.comalot.me/v1/chat/completions
- curl可以发送各种类型的http请求(GET、POST、PUT、DELETE),在这里用来发送POST请求
-H "Content-Type: application/json"
指请求体格式为json,服务器需要按照json格式解析请求体。- \ 是为了将命令几个部分拼接起来。
-H "Authorization: Bearer $API-key"
添加Authorization头,用于身份验证,使用Bearer认证方式,是一种常见的用于API身份验证的方式,痛彻和Json Web Token(JWT)一起使用,表示一个简单的API密钥。-d
表示整个POST请求的请求体body,包括了要发送给服务器的数据'{ ... }'
包含一个json对象,定义具体内容:"model": "gemini-2.0-flash"
指的是需要使用模型。"messages": [{"role": "user", "content": "linux.do是一个什么样的社区"}]
是一个数组,role是user,content是你发送的文本内容。"temperature": 0.7
是控制模型输出随机性的参数,参数越大输出越随机,值越小,输出越确定。https://api.comalot.me/v1/chat/completions
是请求的API_URL
。v1
代表API的版本版本,可以是v1、v2等等。/chat/completions
自己手动写一个
自定义:API_KEY、model、role、content、temperature、https://xxx.xxx/vx/xxx/xxx 、message等等
# #################
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gemini-2.0-flash",
"messages": [
{"role": "system", "content": "你是一个知识渊博的Linux社区专家。"},
{"role": "user", "content": "linux.do是个什么样的社区?"}
],
"temperature": 0.7
}' https://closeai.im/v1/chat/completions
# #################
nano bbb.gemini.request.sh
sudo chmod +x request.sh
还可以优化输入,美化输出
观察返回的json文本,基本内容如下
{
"id": "chatcmpl-27d92b0b2f9c4185bd44cdcebb770a2b",
"model": "gemini-2.0-flash",
"object": "chat.completion",
"created": 1741320064,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "linux.do 是一个中文 Linux 技术交流社区,它汇集了众多 Linux 爱好者、开发者和系统管理员。\n\n**核心特点:**\n\n* **技术交流为主:** linux.do 最重要的功能是为用户提供一个讨论和学习 Linux 相关技术的平台。话题涵盖 Linux 的各个方面,包括但不限于:\n * **发行版选择和使用:** 比如 Ubuntu、Debian、Fedora、Arch Linux 等发行版的安装、配置、优化和问题解决。\n * **服务器管理:** 包括 Web 服务器(如 Apache、Nginx)、数据库服务器(如 MySQL、PostgreSQL)、邮件服务器等的配置和维护。\n * **桌面环境:** 例如 GNOME、KDE Plasma、XFCE 等桌面环境的使用技巧和个性化设置。\n * **编程开发:** 涉及 Linux 下的 C/C++、Python、Shell 脚本等编程语言的应用。\n * **网络技术:** 包括网络配置、防火墙、VPN 等。\n * **嵌入式 Linux:** 针对嵌入式系统的 Linux 开发和应用。\n * **Linux 内核:** 对 Linux 内核的深入理解和定制。\n * **开源软件:** 讨论各种开源软件在 Linux 上的使用。\n* **中文社区:** 主要使用中文进行交流,方便国内用户参与。\n* **活跃的论坛:** linux.do 的论坛是社区的核心,用户可以在论坛上提问、回答问题、分享经验和资源。\n* **知识库:** 社区积累了大量的技术文章、教程和 FAQ,可以帮助用户解决常见问题。\n\n**主要内容板块 (可能随时调整,以社区实际情况为准):**\n\n* **新手入门:** 帮助新手快速了解 Linux。\n* **发行版专区:** 针对不同 Linux 发行版的讨论区。\n* **服务器技术:** 服务器管理和运维相关话题。\n* **桌面应用:** 桌面环境和应用程序的使用。\n* **开发编程:** Linux 下的软件开发。\n* **硬件驱动:** 硬件驱动问题讨论。\n* **安全:** Linux 系统安全相关话题。\n* **提问求助:** 用户提问和寻求帮助的区域。\n* **经验分享:** 用户分享自己的经验和技巧。\n* **资源分享:** 分享 Linux 相关的软件、文档等资源。\n* **站务管理:** 社区管理和公告。\n\n**用户群体:**\n\n* **Linux 初学者:** 寻求帮助和学习 Linux 基础知识。\n* **Linux 爱好者:** 对 Linux 有浓厚兴趣,喜欢探索和研究。\n* **Linux 开发者:** 从事 Linux 下的软件开发。\n* **系统管理员:** 负责 Linux 服务器的运维和管理。\n* **嵌入式工程师:** 从事嵌入式 Linux 开发。\n\n**如何参与:**\n\n* **注册账号:** 在 linux.do 注册一个账号。\n* **浏览论坛:** 阅读论坛帖子,了解社区的讨论内容。\n* **提问:** 遇到问题可以在论坛上提问。\n* **回答问题:** 如果你知道答案,可以帮助其他用户解决问题。\n* **分享经验:** 分享你的 Linux 使用经验和技巧。\n* **参与讨论:** 积极参与论坛讨论,与其他用户交流。\n* **贡献内容:** 可以撰写技术文章、教程等,贡献到社区。\n\n**总结:**\n\nlinux.do 是一个有价值的中文 Linux 技术交流社区,可以帮助你学习 Linux、解决问题、与其他 Linux 用户交流。如果你对 Linux 感兴趣,不妨加入这个社区,与其他爱好者一起探索 Linux 的世界。\n\n为了获得最准确的信息,建议你直接访问 linux.do 网站,了解最新的社区动态和内容。\n"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 846,
"total_tokens": 863,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0
}
}
}
而我们只想要看到content文本,其他的参数不想看到,可以使用jq和pipe( | )提取content的值
| jq -r '.choices[0].message.content'
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gemini-2.0-flash",
"messages": [
{"role": "system", "content": "你是一个知识渊博的Linux社区专家。"},
{"role": "user", "content": "linux.do是个什么样的社区?"}
],
"temperature": 0.7
}' https://closeai.im/v1/chat/completions | jq -r '.choices[0].message.content'
非常完美~
- Python如何构造API请求
示例
nano request.py
sudo chmod +x request.py
python3 request.py
import requests
import json
url = 'https://closeai.im/v1/chat/completions'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-YOUR_API_KEY'
}
data = {
"model": "gemini-2.0-flash",
"messages": [{"role": "user", "content": "linux.do是一个什么样的社区"}],
"temperature": 0.7
}
try:
response = requests.post(url, headers=headers, data=json.dumps(data))
response.raise_for_status()
print(response.json())
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
You must log in or register to comment.