跳转至

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

这段代码做了什么

它只有三件事:

  1. 准备一条用户消息:请它规划杭州一日游。
  2. 调用 model.complete(messages)
  3. 打印模型返回的文本。

这就是最小 Chatbot。

它哪里不够

这个版本看起来已经会回答,但它有几个根本问题:

  • 它不知道实时天气。
  • 它不知道景点开放时间。
  • 它没有结构化输出,前端不好渲染。
  • 它不能可靠地记住你前面说过什么。
  • 它的回答无法复盘:你不知道它为什么这样安排。

所以第一步不是“上 Agent”,而是先修最小 Chatbot 暴露出来的问题。

下一步

先解决第一个小问题:Chatbot 怎么记住当前对话?看 01:对话历史