openai api使用

1OpenAI 的 API 介绍

1.1 api分类

常用的 OpenAI Api 接口总共分为 4 类:对话类、私有化模型训练类、通用类、图片 & 音频类,其中对话类与私有化模型训练类是最常用的。

a .对话类
这类是最常用也是最核心的接口,用于人机对话。对话类接口又细分为:Chat、Completions。Chat 是指多轮对话;Completions 是指单轮对话,主要用于一次性生成一篇文章等,不具备多次对话交互的能力。

b.私有化模型构建类

这类是用于构建私有化模型的相关接口。私有化模型构建分为两种方式:Embeddings、Fine-tunes。

c.通用类

获取模型列表、详情、上传文件等接口。

d.图片 & 音频类

文本转语音、文生图等接口。

官方文档 https://platform.openai.com/docs/api-reference/chat/create

1.2 role简绍

role 字段用来定义消息的发送者角色,具体包括三种选择:system、user、和 assistant。

system(系统):通常用于设置聊天的上下文或者提供系统级别的指示和配置信息。
user(用户):代表实际的用户输入,即用户向聊天系统提出的问题或者发起的对话内容。
assistant(助手):代表智能助手的回复或者动作,是模型根据用户输入给出的响应。

1.3 调用样例
from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-4o-mini-2024-07-18",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

1.4 部分接口说明

https://api.openai.com/v1/audio/speech 将音频转换为文本或将文本转换为音频。

https://api.openai.com/v1/chat/completions 给定一个包含对话的消息列表,模型将返回一个响应。

https://api.openai.com/v1/embeddings 获取给定输入的向量表示形式,机器学习模型和算法可以轻松使用该向量表示。

https://api.openai.com/v1/fine_tuning/jobs 管理微调作业,以根据特定训练数据定制模型。

https://api.openai.com/v1/images/generations 给定提示和/或输入图像,模型将生成新图像。

2 OhMyGPT介绍

2.1 OhMyGPT的核心是利用了OpenAI的API接口,特别是其强大的自然语言处理模型ChatGPT。提供各种当下流行,功能强大的生成式AI服务。

项目网址: https://www.ohmygpt.com

镜像网址:

https://x.dogenet.win

https://aigptx.top

https://textai.buzz

2.2 项目优点

a.可以让你便捷地无限量访问GPT-3.5-turbo、GPT-3.5-turbo-16k、GPT-4、GPT-4-32k、DALL-E、whisper、MidJourney等先进的AI模型。

b.同时提供兼容API调用,目前已接入并可提供OpenAI的Completions、Chat、Images、Audio以及Embeddings接口,以及MidJourney的图像AI能力。

2.3 使用-支持三种登陆方式 github | goole | 邮箱请添加图片描述

a.获取api密钥

![外链图片转存失败,源站请添加图片描述

b.支持的Models/Services
请添加图片描述

c.关于OpenAI兼容API接口说明

​ 提供了完全兼容OpenAI API格式的文档,只需登录到OhMyGPT后,打开设置界面,点击创建一个API密钥,然后将OpenAI的原始API域名或API URL替换为本站的,API密钥也替换成本站的就OK了。

API端点列表:

美国主站直连 稳定部分地区不可用https://api.ohmygpt.com

Cloudflare CDN 稳定全球加速https://cfcus02.opapi.win

Cloudflare Worker 稳定全球加速https://cfwus02.opapi.win

优质线路反代1 优质线路不保证可用性https://aigptx.top

优质线路反代2 优质线路不保证可用性https://cn2us02.opapi.win

本站已兼容OpenAI提供的以下接口能力:

Audio

Chat

Completions

Embeddings

Images

Moderations

2.4 api接入使用

OpenAI的AudioChatCompletionsEmbeddingsImagesModerations接口均已支持,路径、参数和OpenAI的保持一致,这里仅列出一些平台自定义且公开的API文档

在实际使用中您只需要从下方的API端点中选择一个作为基础URL,替换掉https://api.openai.com,或者在后面拼接一下文档中的路径即可。

headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Bearer {api_key}'
}
def chat(messages):
    request_body = {
        "model": "gpt-3.5-turbo-1106",
        "messages": messages,
        "temperature": 0
    }
    logger.info("gpt请求参数:{}".format(json.dumps(request_body, ensure_ascii=False, indent=4)))
    response = requests.post(url="https://cn2us02.opapi.win/v1/chat/completions", headers=headers, json=request_body)
    print(response)
    logger.info("gpt请求结果:{}".format(json.dumps(response.json(), ensure_ascii=False, indent=4)))
    return response
if __name__ == '__main__':
    response=chat([{"role": "user", "content": "你现在是一名优秀的大数据开发工程师,精通hive、spark等sql语法,请帮我分析一下这个sql语句,并给出优化建议,如果sql语句有错误,请给出错误提示。\n\nselect count(1) from dm_user_login_log where dt='2023-01-01' and user_id='100000000000000000' and login_type='1' andlogin_status='1' and login_time between '2023-0"}])
    reply_content = response.json()["choices"][0]["message"]["content"]
    logging.info("sql优化结果:{}".format(reply_content))
INFO - gpt请求参数:{
    "model": "gpt-3.5-turbo-1106",
    "messages": [
        {
            "role": "user",
            "content": "你现在是一名优秀的大数据开发工程师,精通hive、spark等sql语法,请帮我分析一下这个sql语句,并给出优化建议,如果sql语句有错误,请给出错误提示。\n\nselect count(1) from dm_user_login_log where dt='2023-01-01' and user_id='100000000000000000' and login_type='1' andlogin_status='1' and login_time between '2023-0"
        }
    ],
    "temperature": 0
}
2024-06-30 16:08:22,154 - DEBUG - Starting new HTTPS connection (1): cn2us02.opapi.win:443
2024-06-30 16:08:25,557 - DEBUG - https://cn2us02.opapi.win:443 "POST /v1/chat/completions HTTP/1.1" 200 1228
2024-06-30 16:08:25,558 - INFO - gpt请求结果:{
    "id": "chatcmpl-9fjtemnKAy0aXVDVVh3Upa82aHuo3",
    "object": "chat.completion",
    "created": 1719734902,
    "model": "gpt-3.5-turbo-1106",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "1-01 00:00:00' and '2023-01-01 23:59:59';\n\n这个SQL语句的目的是统计在2023年1月1日用户ID为100000000000000000的用户登录类型为1且登录状态为1的登录次数。\n\n优化建议:\n1. 索引优化:确保dm_user_login_log表中dt、user_id、login_type、login_status、login_time字段都有合适的索引,以加快查询速度。\n2. 时间范围优化:可以考虑将login_time字段的时间范围查询改为大于等于'2023-01-01 00:00:00'且小于等于'2023-01-01 23:59:59',这样可以避免使用between语句,提高查询效率。\n3. 数据分区优化:如果dm_user_login_log表按照日期进行了分区,可以根据分区字段dt进行分区查询,以减少扫描的数据量。\n\n错误提示:\n在SQL语句中,'andlogin_status'应该为'and login_status',即在login_status字段和条件之间应该有一个空格。"
            },
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 123,
        "completion_tokens": 297,
        "total_tokens": 420
    },
    "system_fingerprint": "fp_44132a4de3"
}
2024-06-30 16:08:25,558 - INFO - sql优化结果:1-01 00:00:00' and '2023-01-01 23:59:59';

这个SQL语句的目的是统计在202311日用户ID为100000000000000000的用户登录类型为1且登录状态为1的登录次数。

优化建议:
1. 索引优化:确保dm_user_login_log表中dt、user_id、login_type、login_status、login_time字段都有合适的索引,以加快查询速度。
2. 时间范围优化:可以考虑将login_time字段的时间范围查询改为大于等于'2023-01-01 00:00:00'且小于等于'2023-01-01 23:59:59',这样可以避免使用between语句,提高查询效率。
3. 数据分区优化:如果dm_user_login_log表按照日期进行了分区,可以根据分区字段dt进行分区查询,以减少扫描的数据量。

错误提示:
在SQL语句中,'andlogin_status'应该为'and login_status',即在login_status字段和条件之间应该有一个空格。
def tts(messages):
    request_body = {
        "model": "tts-1",
        "input": messages,
        "voice": "alloy",
        "response_format": "mp3",
        "speed": "1",
        "temperature": 0
    }
    logging.info("tts请求参数:{}".format(json.dumps(request_body, ensure_ascii=False, indent=4)))
    response = requests.post(url="https://cn2us02.opapi.win/v1/audio/speech", headers=headers, json=request_body)
    return response.content
def images(prompt):
    request_body = {
        "model": "dall-e-2",
        "prompt": prompt,
        "integer": 1,
        "size": "256x256"
    }
    logging.info("tts请求参数:{}".format(json.dumps(request_body, ensure_ascii=False, indent=4)))
    response = requests.post(url="https://cn2us02.opapi.win/v1/images/generations", headers=headers, json=request_body)
    return response.content
2.5 chatgpt部分参数解释

messages-输入给模型的对话上下文,数组中的每个对象为聊天的上下文信息

model-要使用的模型的 ID

frequency_penalty-介于 -2.0 和 2.0 之间的数字。到目前为止,正值会根据新标记在文本中的现有频率来惩罚新标记,从而降低模型逐字重复同一行的可能性。

logit_bias-修改指定标记在完成中出现的可能性。

logprobs-是否返回输出令牌的对数概率

top_logprobs-一个介于 0 和 20 之间的整数,指定在每个令牌位置最有可能返回的令牌数,每个令牌都有一个关联的对数概率。 logprobs true 如果使用此参数,则必须设置为。

max_tokens-聊天完成时可以生成的最大令牌数。

presence_penalty-介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止是否出现在文本中来惩罚它们,从而增加了模型谈论新主题的可能性。

response_format-指定模型必须输出的格式

temperature-用于控制随机性和多样性的程度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更具集中性和确定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值