OpenAI基础开发示例代码
OpenAI API官方文档
DeepSeek API官方文档
对话补全
from openai import OpenAI # for backward compatibility, you can still use `https://api.deepseek.com/v1` as `base_url`. response = client.chat.completions.create( print(response.choices[0].message.content) |
对话补全接口常用参数列表
参数 | 类型 | 必填 | 默认值 | 介绍 |
---|---|---|---|---|
model |
string | 是 | - | 指定使用的模型,例如 gpt-3.5-turbo 、gpt-4 等。 |
messages |
array | 是 | - | 对话消息列表,每个消息包含 role (如 system 、user 、assistant )和 content (消息内容)。 |
temperature |
number | 否 | 1 | 控制输出的随机性(0-2)。值越低结果越确定,越高越随机。 |
top_p |
number | 否 | 1 | 核采样(Nucleus Sampling)的阈值(0-1),仅考虑概率质量超过此值的候选词。 |
n |
integer | 否 | 1 | 生成多少条聊天补全选项。 |
stream |
boolean | 否 | false | 是否以流式(stream)形式逐步返回响应。 |
stop |
string/array | 否 | null | 指定停止生成的标记(如 ["\n", "。"] ),遇到这些标记时停止生成。 |
max_tokens |
integer | 否 | - | 生成的最大 token 数(受模型限制)。未设置时,模型会自动选择。 |
presence_penalty |
number | 否 | 0 | 惩罚重复出现的话题(-2.0 到 2.0)。正值避免重复话题。 |
frequency_penalty |
number | 否 | 0 | 惩罚高频词汇(-2.0 到 2.0)。正值降低常见词的重复。 |
logit_bias |
object | 否 | null | 调整特定 token 的生成概率(如 {"token_id": bias_value} ,bias_value 范围 -100 到 100)。 |
user |
string | 否 | - | 用户标识符,用于监控滥用行为。 |
response_format |
object | 否 | - | 指定响应格式(如 { "type": "json_object" } ),仅部分模型支持。 |
seed |
integer | 否 | - | 指定随机种子,确保可复现性(部分模型支持)。 |
tools |
array | 否 | - | 定义模型可调用的工具列表(如函数调用)。 |
tool_choice |
string/object | 否 | - | 控制模型是否使用工具,可选 auto (默认)、none 或指定工具(如 {"type": "function", "function": {"name": "my_function"}} )。 |
logprobs |
boolean | 否 | false | 是否返回输出 token 的对数概率(部分模型支持)。 |
top_logprobs |
integer | 否 | - | 当 logprobs 为 true 时,返回每个位置概率最高的 top_logprobs 个 token(如 3 )。 |
embeddings
from openai import OpenAI
# 创建client对象,在OpenAI()构造函数里,需要传递API_KEY和BASE_URL,当我们在环境变量里配置了这两个参数,则这里不需要再传递,它会自动去读取
client = OpenAI(api_key='xxx',base_url='https://api.openai.com/v1')
# 定义一个函数,参数1:text是输入的需要被向量化的内容,参数2:指定向量化模型
def get_embeddings(text, model='text-embedding-ada-002'):
response = client.embeddings.create(input=text, model=model)
return response.data[0].embedding
if __name__ == '__main__':
text = input('请输入需要向量化的内容:')
print(get_embeddings(text))
|
图片识别
from openai import OpenAI
client = OpenAI()
def get_image_info(img_url, model='gpt-4o'):
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {
"url": img_url
}
}
]
}
],
max_tokens=50
)
return response.choices[0].message.content
if __name__ == '__main__':
image_url = input('这是一个识别图片内容的AI,请输入你的图片Url:')
print(get_image_info(image_url))
|
模型的音频输出
import base64 client = OpenAI() completion = client.chat.completions.create( print(completion.choices[0]) wav_bytes = base64.b64decode(completion.choices[0].message.audio.data) |
模型的音频输入
import base64 client = OpenAI() completion = client.chat.completions.create( print(completion.choices[0]) wav_bytes = base64.b64decode(completion.choices[0].message.audio.data) |
推理模型
from openai import OpenAI client = OpenAI() prompt = """ response = client.responses.create( print(response.output_text) |
JSON Output
import json client = OpenAI( system_prompt = """ EXAMPLE INPUT: EXAMPLE JSON OUTPUT: user_prompt = "Which is the longest river in the world? The Nile River." messages = [{"role": "system", "content": system_prompt}, response = client.chat.completions.create( print(json.loads(response.choices[0].message.content)) |