![cover](https://i-blog.csdnimg.cn/direct/cf12af98fe1a40869cca6689e400691a.jpeg)
openai api使用
常用的 OpenAI Api 接口总共分为 4 类:对话类、私有化模型训练类、通用类、图片 & 音频类,其中对话类与私有化模型训练类是最常用的。
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
镜像网址:
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 | 邮箱![请添加图片描述](https://i-blog.csdnimg.cn/direct/cf12af98fe1a40869cca6689e400691a.jpeg)
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的Audio
、Chat
、Completions
、Embeddings
、Images
、Moderations
接口均已支持,路径、参数和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语句的目的是统计在2023年1月1日用户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)将使其更具集中性和确定性。
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)