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,输入\"你好\"——\\你的第一个能对话的程序完成了。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论