Skip to content

Day2-人工智能开发

ChatGPT API 入门

简介

  1. 掌握 ChatGPT API 的基本应用。
  2. 完成 API 密钥和环境的设置
  3. 完成 API 基本调用

知识模块

  • L3. 基于 ChatGPT 的进阶应用

教程地址

教程地址 教程视频地址
零样本提示 零样本提示
少样本提示 少样本提示
思维链 思维链
RAG 检索增强生成 RAG 检索增强生成
React 推理提示 React 推理提示
利用人工智能自动找 bug 利用人工智能自动找 bug

课堂练习

环境准备

ChatGPT的API使用

  • 使用每个人的个人token,通过学院提供的服务间接访问OpenAI API官方API的接口,支持GPT3.5、Embedding等模型。每日的使用量设置的有上限,但是比较大,一般不影响正常使用。

在代码中设置:

import os
os.environ["OPENAI_API_KEY"] = "your personal token"  # 将个人token替换到这个位置
os.environ["OPENAI_BASE_URL"] = "https://apitoken.ceba.ceshiren.com/openai/v1/"
os.environ["OPENAI_API_BASE"] = "https://apitoken.ceba.ceshiren.com/openai/v1/"

练习1:基本的 API 调用示例

要求:

  1. 使用 API 发送一个简单的问题并接收 ChatGPT 的回答。
  2. 修改脚本,发送不同的问题并观察 ChatGPT 的回应。
  3. 修改参数如 temperaturemax_tokenstop_k等,以生成不同风格的回复。
  4. 比较不同参数设置下的生成结果,理解每个参数的作用。

创建一个多轮对话的聊天机器人

需求:

  1. 编写代码进行多轮对话,设计一个聊天机器人,能够处理用户的连续问题并保持上下文。
  2. 使用循环和条件来处理不同的用户输入。

实现要求:

  1. 编写一个Python脚本,初始化对话上下文
  2. 使用循环接收用户输入,并根据上下文生成回复
  3. 再对话结束添加结束条件(如用户输入退出

实现一个智能问答系统

需求:

  1. 使用 ChatGPT API 结合文档内容来回答用户的问题。
  2. 设计一个系统,将用户的问题与文档内容进行匹配,并生成相应的回答。

实现要求:

  1. 准备一个包含信息的文档。
  2. 编写一个 Python 脚本,加载文档并根据用户的问题生成回答。
  3. 使用 API 进行调用,并优化提取的回答。

实战代码

基本的 API 调用示例

def ask_question(prompt, temperature=0.7, max_tokens=100, top_p=1.0):
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        temperature=temperature,
        max_tokens=max_tokens,
        top_p=top_p
    )
    return response.choices[0].message.content

# 发送简单的问题
question = "法国的首都是哪里?"
print(f"问题: {question}")
answer = ask_question(question)
print(f"回答: {answer}")

# 发送不同的问题并观察 ChatGPT 的回应
question2 = "《杀死一只知更鸟》的作者是谁?"
print(f"\n问题: {question2}")
answer2 = ask_question(question2)
print(f"回答: {answer2}")

# 修改参数以生成不同风格的回复
question3 = "讲个笑话吧。"
print(f"\n问题: {question3}")

# 使用不同的参数进行调用
print("\n默认参数:")
default_answer = ask_question(question3)
print(f"回答: {default_answer}")

print("\n高 temperature (1.0):")
high_temp_answer = ask_question(question3, temperature=1.0)
print(f"回答: {high_temp_answer}")

print("\n低 temperature (0.3):")
low_temp_answer = ask_question(question3, temperature=0.3)
print(f"回答: {low_temp_answer}")

print("\n低 max_tokens (50):")
low_tokens_answer = ask_question(question3, max_tokens=50)
print(f"回答: {low_tokens_answer}")

print("\n高 max_tokens (150):")
high_tokens_answer = ask_question(question3, max_tokens=150)
print(f"回答: {high_tokens_answer}")

print("\n低 top_p (0.5):")
low_top_p_answer = ask_question(question3, top_p=0.5)
print(f"回答: {low_top_p_answer}")

print("\n高 top_p (0.9):")
high_top_p_answer = ask_question(question3, top_p=0.9)
print(f"回答: {high_top_p_answer}")

创建一个多轮对话的聊天机器人

conversation = [
    {"role": "system", "content": "你是一个智能回答小助手"}
]

print("开始聊天吧,输入`exit`退出聊天")
while True:
    user_input = input("You: ")
    if user_input.lower() == "exit":
        break
    conversation.append({"role": "user", "content": user_input})

    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=conversation
    )

    bot_response = response.choices[0].message.content
    conversation.append({"role": "assistant", "content": bot_response})
    print(f"小助手: {bot_response}")

实现一个智能问答系统

document = """
[在这里插入长文档内容]
"""

print("根据文档内容提问吧(输入 'exit' 退出):")
while True:
    user_input = input("You: ")
    if user_input.lower() == "exit":
        break

    messages = [
        {"role": "system", "content": "你是一个智能问答小助手"},
        {"role": "user", "content": f"Document: {document}"},
        {"role": "user", "content": f"Question: {user_input}"}
    ]

    response = openai.chat.completions.create(
        model='gpt-3.5-turbo',
        messages=messages,
        max_tokens=100,
        temperature=0.5
    )

    answer = response.choices[0].message.content
    print(f"Answer: {answer}")

总结

  1. 配置个人 Token 环境
  2. 掌握 ChatGPT API 的调用方式