from openai import OpenAI

class QAgent:
    def __init__(self, api_key, base_url,
                 system_prompt="你是一个聪明的智能体,你会用中文回答用户提出的各种问题。"):
        self.api_key = api_key
        self.base_url = base_url
        self.system_prompt = system_prompt
        self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)

    # 提问接口
    def ask(self, question):
        response = self.client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": self.system_prompt},
                {"role": "user", "content": question}
            ],
            stream=False
        )
        return response.choices[0].message.content

    # 更新系统提示
    def update_system_prompt(self, new_prompt):
        self.system_prompt = new_prompt


# 实例化
agent = QAgent(
    api_key="your_api_key",
    base_url="https://api.deepseek.com"
)

print(agent.ask("你好"))

首先,我们定义了一个智能体类 QAgent。在这个类的构造函数中,包含以下几个参数:

  • api_key:用于访问模型服务的 API Key

  • base_url:模型服务的请求地址

  • system_prompt:系统提示词,用于设定智能体的默认行为和回答风格

在实例化时,我们通过 agent = QAgent(...) 创建一个对象,并将 API Key 和服务地址作为参数传入。

这里的 OpenAI 起的是——API 客户端(Client)封装器 的作用。代码逻辑其实是:

QAgent → OpenAI 客户端 → DeepSeek 服务器 → 返回结果

在定义一个QAgent类后,在该类中实例化了一个OpenAI对象。这样就能直接调用OpenAI提供的各类功能函数了。这样做主要是为了避免写一些请求函数。

再看提问接口,当执行:

self.client.chat.completions.create(...) 

实际发生的是:

OpenAI 客户端
    ↓
构造 HTTP 请求
    ↓
发送到 https://api.deepseek.com
    ↓
服务器运行模型 deepseek-chat
    ↓
返回 JSON 数据
    ↓
SDK 解析成 Python 对象

更多推荐