使用 ChatGPT API 构建系统 课程要点总结

该课程介绍了使用ChatGPTAPI构建系统的各个方面,包括LLM的训练方式,处理英文和中文的tokenizer机制,对话格式设计,用户问题分类,内容审核,思维链推理,多步骤响应和整体系统构建。还强调了分隔符在对话中的作用,以及如何确保模型输出的准确性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Building Systems with the ChatGPT API 课程链接:https://learn.deeplearning.ai/chatgpt-building-system/

第一节 简介

介绍了两种 LLM 的情况:Base LLM 使用监督学习进行训练,其开发周期相当漫长,而使用 Instruction tuned LLM 开发 prompt-based AI 则可以将开发过程极大程度缩短。

第二节 Language Models, the Chat Format and Tokens

讲到了 LLM 的 tokenizor 机制,导致 AI 看到的英文是 sub-word 级别而不是单个字母,进而导致 AI 没办法完成将一个单词按字母顺序倒序输出等这类字母基本的任务。我认为在中文中也会遇到类似的问题,我使用 tiktokenizor 对中文做过测试,实践表明有些中文被一整个切割,而有些可能被切为好几份。

然后讲到了 Chat Format,将对话分为三个角色 system、user、assistant。其中涉及对于 assistant 的角色风格和行为的设定最好放到 system 中。

第三节 Classification

讲到了使用 GPT 对用户的问题进行分类的实践,例子是以一个客服角色对用户问题进行二级分类并要求 GPT 以JSON 格式返回。
其中强调了 delimiter (分隔符)的作用,将需要被分类的用户问题用 delimiter 包裹效果会更好。

import os
import openai
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

openai.api_key  = os.environ['OPENAI_API_KEY']


def get_completion_from_messages(messages, 
                                 model="gpt-3.5-turbo", 
                                 temperature=0, 
                                 max_tokens=500):
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, 
        max_tokens=max_tokens,
    )
    return response.choices[0].message["content"]


delimiter = "####"
system_message = f"""
You will be provided with customer service queries. \
The customer service query will be delimited with \
{
     
     delimiter} characters.
Classify each query into a primary category \
and a secondary category. 
Provide your output in json format with the \
keys: primary and secondary.

Primary categories: Billing, Technical Support, \
Account Management, or General Inquiry.

Billing secondary categories:
Unsubscribe or upgrade
Add a payment method
Explanation for charge
Dispute a charge

Technical Support secondary categories:
General troubleshooting
Device compatibility
Software updates

Account Management secondary categories:
Password reset
Update personal information
Close account
Account security

General Inquiry secondary categories:
Product information
Pricing
Feedback
Speak to a human

"""


user_message = f"""\
I want you to delete my profile and all of my user data"""
messages =  [  
    {
   
   'role':'system', 
     'content': system_message},    
    {
   
   'role':'user', 
     'content': f"{
     
     delimiter}{
     
     user_message}{
     
     delimiter}"},  
] 
response = get_completion_from_messages(messages)
print(response)


user_message = f"""\
Tell me more about your flat screen tvs"""
messages =  [  
{
   
   'role':'system', 
 'content': system_message},    
{
   
   'role':'user', 
 'content': f"{
     
     delimiter}{
     
     user_message}{
     
     delimiter}"},  
] 
response = get_comple
接入ChatGPT API的过程主要包括以下几个关键步骤,涵盖从API密钥的获取、环境搭建到代码实现和安全优化的全流程。 ### 获取ChatGPT API密钥 首先,开发者需要访问OpenAI平台并登录账户。在个人资料页面中,可以选择查看现有的API密钥或创建新的密钥。生成的密钥需要被安全地复制并存储在一个安全的文本文件中,以避免泄露。这是后续调用API的认证凭证,也是整个流程中最为敏感的部分之一[^5]。 ### 环境搭建与依赖管理 在具体的开发环境中,开发者需要根据所选的编程语言配置相应的依赖库。例如,对于Java开发者,可以使用OkHttp库来处理HTTP请求。通过Maven仓库搜索`okhttp3.jar`,并选择合适的版本(如3.2版本)进行下载和集成。在实际应用中,如果新版本存在兼容性问题,可能需要回退到旧版本。此外,还需调整项目的JVM版本(如从Java 17更改为Java 11)以确保兼容性[^5]。 ### API调用与参数配置 ChatGPT API的核心功能是通过HTTP请求调用ChatGPT模型,例如`gpt-3.5-turbo`模型。开发者需要根据具体需求选择合适的模型,并配置相关参数,如上下文管理、Prompt工程等。这些参数的设置直接影响模型输出的质量和效率。例如,在企业级客服机器人等场景中,合理的上下文管理和Prompt设计可以显著提升交互体验[^3]。 ### 安全性与敏感信息处理 在实际开发中,敏感信息(如API密钥)的处理至关重要。开发者应避免将密钥硬编码在代码中,而是使用环境变量或配置文件来存储,并确保这些文件不会被提交到公共代码仓库中。此外,在下载依赖库时,需要注意浏览器可能发出的安全警告,确保下载的文件来源可信。 ### 代码示例 以下是一个使用OkHttp库调用ChatGPT API的Java代码示例: ```java import okhttp3.*; import java.io.IOException; public class ChatGPTAPI { private static final String API_KEY = "your_api_key_here"; private static final String MODEL = "gpt-3.5-turbo"; private static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); public static void main(String[] args) { OkHttpClient client = new OkHttpClient(); String jsonBody = "{" + "\"model\": \"" + MODEL + "\"," + "\"messages\": [{\"role\": \"user\", \"content\": \"Hello, ChatGPT!\"}]" + "}"; RequestBody body = RequestBody.create(jsonBody, JSON); Request request = new Request.Builder() .url("https://api.openai.com/v1/chat/completions") .post(body) .addHeader("Authorization", "Bearer " + API_KEY) .build(); try (Response response = client.newCall(request).execute()) { if (response.isSuccessful() && response.body() != null) { System.out.println(response.body().string()); } else { System.out.println("Request failed: " + response.code()); } } catch (IOException e) { e.printStackTrace(); } } } ``` ### 性能优化与成本控制 在生产环境中,性能优化和成本控制是开发者需要重点关注的问题。例如,合理使用流式输出可以减少延迟,而通过缓存机制或批量处理请求可以降低API调用频率,从而节省成本。此外,开发者还需要根据实际需求选择合适的模型版本,避免不必要的资源浪费[^3]。 ### 总结与启发 通过上述步骤,开发者可以顺利接入ChatGPT API,并根据具体需求进行功能扩展和优化。无论是构建企业级客服机器人,还是开发个人助手类应用,ChatGPT的强大功能都能为开发者提供强有力的支持[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值