00:最小 Chatbot
先不要谈 Agent。最小形态就是一个 Chatbot:给模型一段消息,拿回一段文本。
from __future__ import annotations
from pathlib import Path
from agent_patterns_lab.runtime import Message, MockLLM, Tracer
def main() -> None:
tracer = Tracer()
model = MockLLM(
[
(
"A relaxed Hangzhou day: visit West Lake in the morning, "
"try local snacks near Hefang Street, and bring comfortable shoes."
)
]
)
messages = [
Message(
role="user",
content="Plan a relaxed one-day Hangzhou trip. I like tea, local food, and easy walking.",
)
]
answer = model.complete(messages, tracer=tracer)
print(answer)
trace_path = tracer.export_jsonl(Path(".traces") / "00_single_shot.jsonl")
print(f"[trace] {trace_path}")
if __name__ == "__main__":
main()
运行:
uv run python examples/00_single_shot.py
这段代码做了什么
它只有三件事:
- 准备一条用户消息:请它规划杭州一日游。
- 调用
model.complete(messages)。 - 打印模型返回的文本。
这就是最小 Chatbot。
它哪里不够
这个版本看起来已经会回答,但它有几个根本问题:
- 它不知道实时天气。
- 它不知道景点开放时间。
- 它没有结构化输出,前端不好渲染。
- 它不能可靠地记住你前面说过什么。
- 它的回答无法复盘:你不知道它为什么这样安排。
所以第一步不是“上 Agent”,而是先修最小 Chatbot 暴露出来的问题。
下一步
先解决第一个小问题:Chatbot 怎么记住当前对话?看 01:对话历史。