Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0787
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在:
- 个人网站: `https://oeasy.org`
- 蓝桥云课: `https://www.lanqiao.cn/courses/3584`
- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
- Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次我们让智能体使用起终端工具
- 如何让智能体
- 使用 网络搜索工具呢?
| 角色 | 核心定位 | 作用与特点 | 典型使用场景举例 |
|---|---|---|---|
| system | 模型隐形引导者 | 1. 提前设定模型行为(如“简洁回答”“用专业术语”) 2. 不直接参与对话,用户看不到 3. 影响整个对话的回答风格和方向 |
你是耐心的数学老师 解题步骤要详细 |
| user | 对话需求发起者 | 1. 直接传递用户的提问、需求或指令 2. 是模型回答的直接触发点 3. 内容会被模型作为核心依据来生成回应 |
“请解释什么是质数?” “帮我写一段生日祝福” |
| assistant | 对话的“历史回应记录者” | 1. 存储模型此前给出的回答,作为对话上下文 2. 无主动作用,需手动传入历史记录 3. 让模型“记住”之前的内容,保证多轮对话连贯 |
连贯上下文 |
from openai import OpenAI
import sys
# 初始化OpenAI客户端
client = OpenAI(
base_url='https://api-inference.modelscope.cn/v1',
api_key = 'ms-9b5aef45-a43a-4f6a-bd74-8691b1197519',
)
# 初始化消息历史,包含系统提示词
messages = [
{
'role': 'system',
'content': '你是一个记忆力很强的助手,能够记住之前的对话内容,并根据上下文提供连贯的回答。'
}
]
print("欢迎使用智能对话助手!输入'退出'或'q'结束对话。\n")
# 对话循环
while True:
# 获取用户输入
user_input = input("你: ")
# 检查是否退出
if user_input.lower() in ['退出', 'q', 'quit', 'exit']:
print("再见!")
break
# 添加用户消息到历史
messages.append({
'role': 'user',
'content': user_input
})
try:
# 发送请求到模型
response = client.chat.completions.create(
model='Qwen/Qwen3-Next-80B-A3B-Instruct', # ModelScope Model-Id
messages=messages,
stream=True
)
print("助手: ", end='', flush=True)
assistant_reply = ""
# 处理流式响应
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='', flush=True)
assistant_reply += chunk.choices[0].delta.content
print() # 换行
# 添加助手回复到历史
messages.append({
'role': 'assistant',
'content': assistant_reply
})
except Exception as e:
print(f"发生错误: {e}")
# 发生错误时,移除最后添加的用户消息
if messages and messages[-1]['role'] == 'user':
messages.pop()
- 网络获取有两个渠道
- 爬取搜索引擎
- 直接使用api
- 我们试试api的方式
- 使用api接口需要api-key
- 尝试使用接口
#!/usr/bin/env python3
import requests, json, sys
def format_search_results(result):
"""提取并格式化搜索结果"""
output = []
# 显示请求ID
if 'request_id' in result:
output.append(f"REQUEST_ID: {result['request_id']}")
output.append("-" * 50)
# 提取references中的搜索结果
references = result.get('references', [])
if references:
for item in references[:5]:
title = item.get('title', '无标题')
url = item.get('url', '无链接')
content = item.get('content', '无描述')
# 截断过长的内容
if len(content) > 200:
content = content[:200] + '...'
output.append(f"{title} | {url} | {content}")
else:
output.append("未找到搜索结果")
return "\n".join(output)
query = sys.argv[1] if len(sys.argv) > 1 else "北京有哪些旅游景区"
url = "https://qianfan.baidubce.com/v2/ai_search/chat/completions"
headers = {
"Authorization": "Bearer bce-v3/ALTAK-z6Nrmu8xKq4mpNsp55PPv/037e653ff0ed268dd21dad96e73464614f75f991",
"Content-Type": "application/json"
}
data = {
"messages": [{"content": query, "role": "user"}],
"search_source": "baidu_search_v2",
"resource_type_filter": [{"type": "web", "top_k": 20}],
"search_recency_filter": "year"
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
result = response.json()
print(f"QUERY: {query}")
print(format_search_results(result))
except Exception as e:
print(f"ERROR: {e}")
python3 baidu.py 北京天气
- 搜索成功
- 想让agent 具有搜索功能
根据这两个文件
让agent具备搜索功能
- 这
- 下次再说👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。




