深⼊了解 GPT-4和ChatGPT的API

学习OpenAI Playground,使你在编写代码之前更好地了解 模型。学习 OpenAI Python 库,这部分内容包括登录信息和⼀个简单的 Hello World ⽰例。然后学习创建和发送 API 请求的过程,并 了解如何处理 API 响应。这将确保你知道如何解释这些 API 返回的数据。 最后,本章还会介绍诸如安全最佳实践和成本管理等考虑因素。
根据业务类型和模型特点选择不同的模型,这些模型可通过API 作为服务使⽤(通过直接的 HTTP 调⽤或提供的库)
1.1 在 OpenAI Playground 中使⽤ GPT 模型
OpenAI Playground 是⼀个基于试用 Web 的平台,可以注册账号,登录后,编写提⽰词,选择模型,并轻松查看模型⽣成的输出。
1.2 使⽤ OpenAI Python 库
GTP运行大模型服务,对外提供API接口,用户获取OpenAI 账户和 API 密钥,调用接口;密钥赋予你调⽤ API ⽅法的权利;它将你的 API 调⽤与你的账户关联,⽤于计费。最好将其导出为环境变量。这样⼀来,你的应⽤程序就能够在不直接将密钥写⼊代码的情况下使⽤它。以下说明具体如何做。OpenAI Python 库会⾃动查找名为 OPENAI_API_KEY 的环境变量。
对于 Linux 或 macOS:
# 设置当前会话的环境变量 OPENAI_API_KEY
export OPENAI_API_KEY=sk-(...)
# 检查是否设置了环境变量
echo $OPENAI_API_KEY
对于 Windows:
# 设置当前会话的环境变量 OPENAI_API_KEY
set OPENAI_API_KEY=sk-(...)
# 检查是否设置了环境变量
echo %OPENAI_API_KEY%
1.3 helloworld程序
(1)安装openAI
pip install openai
(2)用python编写helloworld程序
import openai
# 调⽤ OpenAI 的 ChatCompletion 端点
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello World!"}], )
# 提取响应
print(response["choices"][0]["message"]["content"])
(3)或者直接在cmd中输入如下命令
openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello world"
(4)加载key的方法
OpenAI Python 库会⾃动查找名为 OPENAI_API_KEY 的环境变量。
你可以使⽤以下代码将 openai 模块指向包含密钥的⽂件:
# 从⽂件加载 API 密钥 openai.api_key_path = <PATH>
你还可以使⽤以下⽅法在代码中⼿动设置 API 密钥:
# 加载 API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")
 
1.4 ChatCompletion的create ⽅法入参
1.4.1 必选参数
ChatCompletion 端点及其有多个输⼊参数,但只有两 个是必需的,如表 2-1 所⽰。
 
 
 
添加图片注释,不超过 140 字(可选)
 
实例
import openai
# 对 GPT-3.5 Turbo 来说,端点是
ChatCompletion openai.ChatCompletion.create(
# 对 GPT-3.5 Turbo 来说,模型是
gpt-3.5-turbo model="gpt-3.5-turbo",
# 消息列表形式的对话
messages=[ {"role": "system", "content": "You are a helpful teacher."}, { "role": "user", "content": "Are there other measures than time complexity for an algorithm?", }, { "role": "assistant", "content": "Yes, there are other measures besides time complexity for an algorithm, such as space complexity.", }, {"role": "user", "content": "What is it?"}, ], )
1.4.2 可选参数
 
 
 
添加图片注释,不超过 140 字(可选)
1.5 用GTP创建一个查询数据库的应用
例如我开了一家商店,需要查询商品的价格;
 
 
 
添加图片注释,不超过 140 字(可选)
(1) 定义数据库查询函数
import sqlite3
def find_product (query_SQL):
# 连接到SQLite数据库
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 执行查询
cursor.execute(query_SQL)
# 获取查询结果
results = cursor.fetchall()
# 关闭连接
cursor.close()
conn.close()
return results
(2) 接下来定义函数的规范
函数规范的作用是将查询数据库函数和大模型做一个关联,定义了大模型调用这个函数的功能和输入参数;
# 函数定义
functions = [
{
"name": "find_product",
"description": "Get a list of products from a sql query",
"parameters": {
"type": "object",
"properties": {
"sql_query": {
"type": "string",
"description": "A SQL query",
}
},
"required": ["sql_query"],
},
}
]
(3)调用大模型将用户语言转为SQL
# ⽰例问题
user_question = "I need the top 2 products where the price is less
than 2.00"
messages = [{"role": "user", "content": user_question}]
# 使⽤函数定义调⽤ ChatCompletion 端点
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613", messages=messages,
functions=functions
)
response_message = response["choices"][0]["message"]
messages.append(response_message)
(4)将查询结果转化为自然语言
# 调⽤函数
function_args = json.loads(
response_message["function_call"]["arguments"]
)
products = find_product(function_args.get("sql_query"))
# 将函数的响应附加到消息中
messages.append(
{
"role": "function",
"name": function_name,
"content": json.dumps(products),
}
)
# 将函数的响应格式化为⾃然语⾔
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=messages,
)
1.6 安全和隐私
⽤户的输⼊将被保留 30 天,⽤于监控和 使⽤合规检查⽬的。这意味着 OpenAI 员⼯和专门的第三⽅承包商可能会访 问你的 API 数据。 请勿通过 OpenAI 的端点发送个⼈信息或密码等敏感数据。
1.7 其他open Ai功能
1.7.1 嵌入
将嵌⼊视为⼀种复杂的语⾔解释器,它将丰富的词汇和句⼦转换为 ML 模型能够轻松理解的数值语⾔。嵌⼊的⼀个突出特点是,它能够保持语义相似性。也就是说,含义相近的词语或短语在数值空间中更接近。嵌⼊的原则是以某种⽅式有意义地表⽰⽂本字符串,以捕捉其语义相似性。由于模型依赖数学函数,因此它需要数值输⼊来处理信息。然⽽,许多元 素(如单词和标记)本质上并不是数值。为了解决这个问题,我们⽤嵌⼊ 将这些单词标记转化为数值向量,以数值⽅式表⽰这些概念,OpenAI提供了将⽂本转换为数值向量的模型。用这个模型先将输⼊⽂本转化为数字向量,然后将该向量作为模型的输⼊。嵌⼊具有这样的属性:如果两段⽂本具有相似的含义,那么它们的向量表 ⽰也是相似的。
result = openai.Embedding.create(
model="text-embedding-ada-002", input="your text"
)
通过以下⽅式访问嵌⼊:
result['data']['embedding']
嵌⼊是⼀个向量,即⼀个浮点数数组。
 
 
 
添加图片注释,不超过 140 字(可选)
1.7.2 内容审核模型
OpenAI 提供了⼀个模型来检查内容是否符合使用规则。识别用户输入对种族、性别、⺠族、宗教、国籍、残疾或种姓的仇恨。对特定群体的暴⼒⾏为或严重伤害。内容涉及⾃残⾏为。内容涉及性⾏为,涉及 18 岁以下的未成年⼈。内容涉及崇尚暴⼒或者给他⼈造成痛苦或羞辱。内容涉及详尽地描绘死亡、暴⼒或严重的⾝体伤害。
(1)审核模型接口
import openai
# 调⽤ Moderation 端点,并使⽤ text-moderation-latest 模型
response = openai.Moderation.create(
model="text-moderation-latest",
input="I want to kill my neighbor.",
)
(2)模型审核结果
{ "id": "modr-7AftIJg7L5jqGIsbc7NutObH4j0Ig", "model": "text-moderation-004", "results": [ { "categories": { "hate": false, "hate/threatening": false, "self-harm": false, "sexual": false, "sexual/minors": false, "violence": true, "violence/graphic": false }, "category_scores": { "hate": 0.0400671623647213, "hate/threatening": 0.000003671687863970874, "self-harm": 0.0000013143378509994363, "sexual": 0.0000005508050548996835, "sexual/minors": 0.00000011862029225540027, "violence": 0.9461417198181152, "violence/graphic": 0.000001463699845771771 }, "flagged": true } ] }
(3)输出字段说明
 
 
 
添加图片注释,不超过 140 字(可选)
 
posted @ 2025-04-10 19:30  一字千金  阅读(38)  评论(0)    收藏  举报