Agent开发(一)-基本对话

admin 2026-08-19 04:37:06 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是Agent开发系列的首篇,重点讲解如何利用Python实现与AI大模型的基本对话功能。文章通过配置yaml文件管理API密钥与模型参数,借助requests库向DeepSeek的OpenAI兼容接口发送POST请求,并解析返回的JSON数据提取回复内容。作者提供了包含异常处理的完整命令行对话代码,适合零基础读者快速上手。此外,文章还预告了后续关于持续对话、FunctionCall、MCP协议、多智能体团队及插件加载机制等进阶主题,为构建复杂Agent系统提供了清晰的学习路线图。 综合评分: 73 文章分类: 安全开发,AI安全


cover_image

Agent开发(一)-基本对话

原创

BlackFace BlackFace

GG学安全

2026年8月17日 00:55 重庆

在小说阅读器读本章

去阅读

从今天开始,我会陆续讲解Agent开发,让大家了解如何从零开发一个agent,了解agent如何实现,他的机制,目前已经写了以下文章:

Agent开发(一)-基本对话Agent开发(二)-持续性对话Agent开发(三)-给agent加上函数Agent开发(四)-给agent加上双手-function call机制Agent开发(五)-给agent加上技能-skill机制Agent开发(六)-给agent接上外部工具-MCP协议Agent开发(七)-前六章口水话总结

后续会继续发下去:

Agent开发(八)-agent teams的实现Agent开发(九)-会话保存&续聊Agent开发(十)-claudecode的CLAUDE.md实现Agent开发(十一)-上下文管理Agent开发(十二)-前十一章口水话总结Agent开发(十三)-插件加载机制-先让插件跑起来Agent开发(十四)-插件加载机制-服务容器Agent开发(十五)-插件加载机制-依赖排序Agent开发(十六)-插件加载机制-生命周期Agent开发(十六)-插件加载机制-热重载与拼接Agent开发(十七)-插件加载机制-写一个Web插件Agent开发(十八)-总结

我们要做的第一件事:让程序能跟 AI 说话。AI 不生活在你的电脑里,它在很远的地方——你的程序发一个”请求”过去,AI 回一个”响应”,你拆开读。这个”发请求拿响应”的接口,就叫 **API**。

第一步:配置 AI(config.yaml)

先写一个配置文件,告诉程序”找谁说话、用什么身份、用哪个模型”:

# config.yaml 文件api_key: sk-你的keybase_url: https://api.deepseek.commodel: deepseek-chat

| | | | — | — | | 配置 | 意思 | | api_key | 你的”身份证”,AI 认这个 | | base_url | AI 的”地址” | | model | 用哪个模型(deepseek-chat 是通用对话模型) | | | |

用 yaml 库读取配置文件:

import yamlconfig = yaml.safe_load(open("config.yaml", encoding="utf-8"))# config 变成一个字典:# config["base_url"] = "https://api.deepseek.com"# config["api_key"]  = "sk-你的key"# config["model"]    = "deepseek-chat"

第二步:发请求,问 AI 一句话

DeepSeek 的对话接口长这样(openai 兼容格式):

POST /chat/completionsHost: base_urlAuthorization: Bearer 你的api keyContent-Type: application/json
{    "model": "deepseek-chat",    "messages": [        {"role": "user", "content": "你好"}    ]}

用 requests 库发这个请求。requests.post 的三个参数,正好对应”寄信的三部分”:

import requests
response = requests.post(    config["base_url"] + "/chat/completions",   # ① 地址(寄给谁)    headers={                                    # ② 身份(你是谁)        "Authorization": f"Bearer {config['api_key']}",        "Content-Type": "application/json"    },    json={                                       # ③ 信的内容(说什么)        "model": config["model"],        "messages": [{"role": "user", "content": "你好"}]    })

json= 是 requests 的便捷写法:它自动把 Python 字典变成 JSON 字符串发出去,不用你手动转。

第三步:拆开 AI 的回信

AI 回的信是 JSON 格式,response.json() 把它解析成 Python 字典。要拿到 AI 说的话,按这个路径一层层取:

response.json()   └── ["choices"]              # 候选回答列表(一般只有一个)         └── [0]                # 取第一个回答               └── ["message"]  # 回答这条消息                     └── ["content"]   # 回答的文本内容
reply = response.json()["choices"][0]["message"]["content"]print(reply)

完整代码(chat.py)

# chat.pyimport requestsimport yaml
config = yaml.safe_load(open("config.yaml", encoding="utf-8"))
while True:    user_input = input(">>> ").strip()          # 读你输入的话    if user_input.lower() in ["quit", "exit"]:  # 输入 quit / exit 就退出        break
    try:        response = requests.post(            config["base_url"] + "/chat/completions",            headers={                "Authorization": f"Bearer {config['api_key']}",                "Content-Type": "application/json"            },            json={                "model": config["model"],                "messages": [{"role": "user", "content": user_input}]            }        )        reply = response.json()["choices"][0]["message"]["content"]        print(reply)    except Exception as e:        print(f"Error: {e}")

运行 python chat.py,输入”你好”——**你的第一个能对话的程序完成了。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:GG学安全 BlackFace BlackFace《Agent开发(一)-基本对话》

评论:0   参与:  0