💻 源码
const TOOLS = [
  { name: 'get_current_datetime', desc: '获取指定时区当前时间' },
  { name: 'calculate', desc: '精确数学计算' },
  { name: 'get_weather', desc: 'Open-Meteo 实时天气' },
  { name: 'get_exchange_rate', desc: 'Frankfurter 实时汇率' },
]

export function ConceptPanel() {
  return (
    <section className="concept-panel">
      <h2>什么是 ReAct?</h2>
      <p className="concept-lead">
        <strong>ReAct</strong> = <strong>Re</strong>asoning(推理)+ <strong>Act</strong>ing(行动)。
        大模型不再一次性猜答案,而是交替进行「思考 → 调用工具 → 观察结果 → 再思考」,直到得出可靠结论。
      </p>

      <div className="react-flow">
        <div className="flow-step">
          <span className="flow-num">1</span>
          <div>
            <strong>Thought 思考</strong>
            <p>分析问题,判断是否需要外部数据</p>
          </div>
        </div>
        <div className="flow-arrow">↓</div>
        <div className="flow-step">
          <span className="flow-num">2</span>
          <div>
            <strong>Action 行动</strong>
            <p>选择工具并传入参数(Function Calling)</p>
          </div>
        </div>
        <div className="flow-arrow">↓</div>
        <div className="flow-step">
          <span className="flow-num">3</span>
          <div>
            <strong>Observation 观察</strong>
            <p>读取工具返回的真实结果</p>
          </div>
        </div>
        <div className="flow-arrow">↓</div>
        <div className="flow-step">
          <span className="flow-num">4</span>
          <div>
            <strong>Answer 回答</strong>
            <p>综合推理链,生成最终回复</p>
          </div>
        </div>
      </div>

      <h3>本项目接入的真实工具</h3>
      <ul className="tool-list">
        {TOOLS.map((t) => (
          <li key={t.name}>
            <code>{t.name}</code>
            <span>{t.desc}</span>
          </li>
        ))}
      </ul>
    </section>
  )
}