Agent学习day02

复制代码
https://helloagents.pro/#preface

目录


(6)接入大模型(LLM)

LLM 只是根据 Tool 的描述做匹配。

复制代码
hello_agent/
│
├── main.py          # 程序入口
├── agent.py         # Agent
├── tools.py         # Tool
├── registry.py      # Tool注册
├── llm.py           # 调用LLM
├── config.py        # API Key
├── requirements.txt
└── .env

为什么要 .env?

复制代码
API_KEY="sk-xxxxxxxxxxxxxxxx"

直接放在代码中不规范。

requirements.txt

以后别人拿到项目直接

复制代码
pip install -r requirements.txt

对应需要的全部环境就好了。

API 到底是什么?

API 就是:程序帮你完成这件事。

什么是OpenAI SDK?

SDK 全称是:

复制代码
Software Development Kit(软件开发工具包)

别人帮你写好的一套代码,让你不用重复造轮子。

SDK = 别人写好的工具库。

OpenAI SDK是OpenAI 提供了一个官方 Python 库。

安装

复制代码
pip install openai

安装以后

复制代码
from openai import OpenAI

就是导入 OpenAI SDK。以后你就不用自己写 HTTP 请求。

SDK 和 API 是什么关系?

可以理解为:

复制代码
API 是餐厅。
SDK 是服务员。

你:不用自己进厨房。只需要告诉服务员:我要一份牛肉面。

服务员:帮你下单。帮你端回来。

SDK 就是那个:服务员。

API 是大模型提供的能力,OpenAI SDK 是官方提供的 Python 工具,它把复杂的网络请求封装起来,让我们可以用几行 Python 代码调用大模型。

(7)OpenAI SDK 的核心对象------Client

几乎所有的Agent项目的第一行代码如下:

复制代码
from openai import OpenAI

client = OpenAI(
    api_key="你的API Key"
)

什么是 Client(客户端)?

Client 就是你的程序和大模型服务器之间的"通信员"。

创建 Client 的真正含义

创建一个能够访问 GPT 服务的客户端。

复制代码
里面会保存:
API Key(你的身份)
Base URL(服务器地址)
网络连接配置

以后:所有请求都通过这个 client 发出去。

真正重要的是 client.chat.completions.create()

复制代码
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role":"user",
            "content":"你好"
        }
    ]
)

role 是什么意思?

目前先记三个。

system 告诉模型:你是谁。

复制代码
{
    "role":"system",
    "content":"你是一名科研助手。"
}

user 用户说的话。

复制代码
{
    "role":"user",
    "content":"你好"
}

assistant 模型以前说过的话。

复制代码
{
    "role":"assistant",
    "content":"你好,有什么可以帮助你?"
}

(8)第一次调用 LLM(真正的 AI)

让 Python 和大模型真正说上第一句话。

第一步:安装 OpenAI SDK

打开 PyCharm 的 Terminal(不是 Python Console)。

输入:

复制代码
pip install openai python-dotenv

安装完成后进行测试一下:

复制代码
pip show openai

第二步:创建 .env

内容是:

复制代码
OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxx
BASE_URL=https://xxxxxxxx
MODEL=xxxxxxxx

第三步:创建 config.py

py 复制代码
import os

from dotenv import load_dotenv

load_dotenv()

API_KEY = os.getenv("OPENAI_API_KEY")

BASE_URL = os.getenv("BASE_URL")

MODEL = os.getenv("MODEL")

整个项目以后只从这里读取配置。

第四步:创建 llm.py

开始真正调用 SDK。

py 复制代码
from openai import OpenAI

from config import API_KEY, BASE_URL

client = OpenAI(
    api_key=API_KEY,
    base_url=BASE_URL
)

第五步:第一次发送请求

py 复制代码
from config import MODEL
response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {
            "role":"user",
            "content":"你好"
        }
    ]
)
print(response)

response 到底是什么?

它就是:一个 Python 对象。

(9)发送第一条真正的大模型请求

SDK只是一个"快递员",真正回答问题的是远程服务器上的模型。

第一步:创建 Client

py 复制代码
from openai import OpenAI

client = OpenAI(
    api_key=API_KEY,
    base_url=BASE_URL
)

只是创建了:一个能够和服务器通信的客户端。

第二步:发送请求

py 复制代码
response = client.chat.completions.create(...)

第三步:messages

这是 Agent 最重要的数据结构。

py 复制代码
messages = [
    {
        "role": "user",
        "content": "你好"
    }
]

第四步:response

服务器返回response

真正的回答在:

py 复制代码
response.choices[0].message.content

第五步:usage

py 复制代码
print(response.usage)

可能得到:

复制代码
prompt_tokens=18
completion_tokens=62
total_tokens=80

之后收费会按照对应的token数来计算。

注册SiliconFlow(硅基流动)

选择Qwen/Qwen3.6-35B-A3B

创建API密钥

编写代码

.env

复制代码
OPENAI_API_KEY=sk-sgdohmdslorteqctbnrfvxjadroixabksevwdqxzcydnukuv
BASE_URL=https://api.siliconflow.com/v1
MODEL=Qwen/Qwen3.6-35B-A3B

config.py

py 复制代码
# API Key
import os
from dotenv import load_dotenv

load_dotenv()

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
BASE_URL = os.getenv("BASE_URL")
MODEL = os.getenv("MODEL")

llm.py

py 复制代码
from openai import OpenAI
from config import OPENAI_API_KEY, BASE_URL, MODEL

client = OpenAI(
    api_key=OPENAI_API_KEY,
    base_url=BASE_URL
)

response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "user", "content": "你好,请用一句话介绍你自己。"}
    ]
)

answer = response.choices[0].message.content

print(answer)
print("Token 使用情况:", response.usage)

控制台运行

复制代码
 cd C:\Users\findx\PycharmProjects\pythonProject\hello_agent

python llm.py

(10)把 LLM 封装成可复用模块

第一步:修改 llm.py

py 复制代码
from openai import OpenAI
from config import OPENAI_API_KEY, BASE_URL, MODEL

client = OpenAI(
    api_key=OPENAI_API_KEY,
    base_url=BASE_URL
)


def chat(prompt: str) -> str:
    response = client.chat.completions.create(
        model=MODEL,
        messages=[
            {"role": "user", "content": prompt}
        ]
    )

    return response.choices[0].message.content

第二步:创建测试文件 test_llm.py

py 复制代码
from llm import chat

answer = chat("请用一句话解释什么是 Agent。")

print(answer)

运行:

复制代码
python test_llm.py

升级llm.py

py 复制代码
from openai import OpenAI
from config import OPENAI_API_KEY, BASE_URL, MODEL

client = OpenAI(
    api_key=OPENAI_API_KEY,
    base_url=BASE_URL
)

def chat(messages):

    response = client.chat.completions.create(
        model=MODEL,
        messages=messages
    )

    return response.choices[0].message.content

升级test_llm.py

py 复制代码
from llm import chat

messages = [

    {
        "role":"system",
        "content":"你是一名Agent开发导师。"
    },

    {
        "role":"user",
        "content":"请介绍一下Agent。"
    }

]

answer = chat(messages)

print(answer)