1. 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'

非常完美~

  1. 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}")