AIGC: 关于ChatGPT中的核心API调用示例

Open AI 的 api 调用示例

  • API的调用的文档:https://platform.openai.com/docs/api-reference/introduction
  • ChatGPT官方提供了 Python版的包 和 Nodejs版的包
    • $pip install openai
    • $npm install openai
  • 我们使用 python3.8版本来安装: $sudo python3.8 -m pip install openai
  • 大家可以在自己的python环境里面呢进行一下安装
  • 官方python版的 OpenAI 模块,除了最基础的对于Chat的API的调用,还封装了很多其他模型,其他场景的一些使用方法
  • 我们直接通过python版的 OpenAI 去调用是比较简单的,是比较容易看到效果的
    • 因为python版它有很多比较成熟的一些库和第三方的一些模块
    • java版的client和其他第三方组件的集成是比较困难的
    • 在机器学习领域,python,它整体的生态还是比较好的
  • 对于 Open AI, 它的API是需要API Key去进行认证的

1 )通过 curl 命令来访问

  • 最简单的一个 api 调用示例
    • 通过去访问models这个接口去列出 open ai 目前所支持的所有的模型

      shell 复制代码
      curl -x http://127.0.0.1:7890 https://api.openai.com/v1/models \
        -H "Authorization: Bearer $OPENAI_API_KEY$"
    • 上面 -x http://127.0.0.1:7890 是配置的代理(替换使用自己配置的代理即可),国内没法直接访问 open ai 的接口

    • $OPENAI_API_KEY$ 替换成自己的 API_KEY

  • 回车执行 curl 命令,即可正确响应

2 )通过 python 程序处理

python 复制代码
import os
import openai

openai.proxy = "http://127.0.0.1:7890"
openai.api_key = "此处填入您的 api_key"
openai.Model.list()
  • 此处我们在控制台可看到,返回的结果获取到了openi所提供的相关的这些模型
    • 如果没有成功的去获取到返回的结果
    • 那么,可能就需要看一下是否是 api_key 有问题还是你的网络有问题

Open AI 聊天接口的调用

  • 文档第三项: Making requests 菜单

    • https://platform.openai.com/docs/api-reference/making-requests

      shell 复制代码
      curl https://api.openai.com/v1/chat/completions \
        -H "Content-Type: application/json"
        -H "Authorization: Bearer $OPENAI_API_KEY$" \
        -d '{
          "model": "gpt-3.5-turbo",
          "messages": [{"role": "user", "content": "Say this is a test!"}],
          "temperature": 0.7
        }'
    • 返回

      json 复制代码
       {
          "id": "chatcmpl-abc123",
          "object": "chat.completion",
          "created": 1677858242,
          "model": "gpt-3.5-turbo-0301",
          ... // 此处省略后续
        }
       ```
  • 核心的 chat 接口,菜单第五项, Chat

    • https://platform.openai.com/docs/api-reference/chat/create
    • 我们看一下这个接口: https://api.openai.com/v1/chat/completions
    • body
      • model [Required]
      • messages [Required]
        • role [Required]
        • content [Required]
        • name [Optional]
        • function_call [Optional]
      • functions [Optional]
        • name [Required]
        • description [Optional]
        • parameters [Required]
      • temperature [Optional] 较高的温度值让输出更加随机,较低的温度值会使输出更稳定
      • top_p [Optional] 控制输出的随机性
      • n [Optional] 返回几个结果,默认是1个结果
      • stream [Optional] 交互是否是流式的,默认是 false
      • stop [Optional] 停用词
      • max_tokens 所允许的最大的token的数量, 这里是设置的是模型生成的最大的输入长度,可以控制模型生成文本的长度
      • presence_penalty 存在惩罚,决定模型是否偏好新词语的参数,设置较高值会让模型倾向于生成新出现的词而不是重复已有的词
      • frequency_penalty 频率惩罚,决定模型是否偏好常见词语的参数,设置较高值会让模型倾向于生成不常见的词语
      • ...
  • 返回

    json 复制代码
    {
      "id": "chatcmpl-123",
      "object": "chat.completion",
      "created": 1677652288,
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "\n\nHello there, how many I ..."
          },
          "finish_reason": "stop"
        }
      ],
      // 用于计算本次会话 tokens 的数量
      "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
      }
    }
  • 可以通过open ai所提供的方法去对我们的 Prompt 去进行拆分,拆分成tokens

  • 可以通过官方提供的方法去计算tokens的数量

  • 使用python程序测试下

    py 复制代码
    import os
    import openai
    
    openai.proxy="http://127.0.0.1:7890"
    openai.api_key = '您的api_key'
    
    pcomletion = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"},
      ]
    )
    
    print(completion.choices[0].message)
  • 输出

    py 复制代码
    "role": "assistant",
    "content": "Hello! How can I assist you today?"
相关推荐
程序员小灰2 小时前
谷歌AI模型Gemini 3.0 Pro,已经杀疯了!
人工智能·aigc·gemini
韩数2 小时前
小白也能看懂! 今年爆火的 MCP 协议究竟是什么?写给普通人的 MCP 指南
后端·aigc·mcp
穷人小水滴16 小时前
科幻小说计划 (顾雪) (AIGC)
aigc·午夜话题·科幻
小溪彼岸17 小时前
初识Qwen Code CLI
aigc
小溪彼岸18 小时前
Gemini CLI可以使用Gemini 3 Pro了
aigc·gemini
小溪彼岸18 小时前
Google 发布 Antigravity Agent编辑器
google·aigc
用户5191495848451 天前
Ash框架授权绕过漏洞分析:当绕过策略条件评估为真时
人工智能·aigc
用户5191495848451 天前
Bedrock AgentCore Python SDK:零基础设施部署AI代理的终极方案
人工智能·aigc
Mintopia1 天前
开源AIGC模型对Web技术生态的影响与机遇 🌐✨
人工智能·aigc·敏捷开发
同学小张1 天前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native