工程級進階 AI Agent 系統藍圖及最小可運行範例

更新 發佈閱讀 17 分鐘

一個 工程級的進階 AI Agent 系統藍圖 + 最小可運行範例

整體會做到要求的:

  • ✅ Tool Calling 微調資料生成
  • LLaMA / Qwen LoRA 微調腳本
  • RAG (向量檢索)
  • Auto Tool Selection
  • Graph Memory
  • Multi-step Reasoning Agent
  • ChatGPT 類介面

整體架構其實已經接近 AutoGPT / LangGraph / Devin 類型 Agent


一、最終系統架構

                ┌─────────────────┐
│ User Chat UI
└────────┬────────┘


┌──────────────────┐
│ Agent Planner │
(Multi-step LLM)
└────────┬─────────┘

┌───────────────┼───────────────┐
▼ ▼
Tool Selection RAG Retriever
│ │
▼ ▼
Tool Executor Vector Database
│ │
▼ ▼
└───────────────┬───────────────┘

Graph Memory


Final Response

二、專案目錄

建議結構:

ai_agent/

├── train/
│ ├── generate_data.py
│ ├── train_lora.py

├── rag/
│ ├── build_index.py
│ ├── retriever.py

├── tools/
│ ├── calendar_tool.py
│ ├── database_tool.py
│ ├── search_tool.py

├── memory/
│ ├── graph_memory.py

├── agent/
│ ├── planner.py
│ ├── executor.py

├── server/
│ ├── api.py

└── ui/
├── chat_app.py

三、100 條 Tool Calling 訓練資料生成器

train/generate_data.py

</>Python
import json
import random

tools = [
("query_database", "查詢預算資料"),
("add_calendar_event", "新增行事曆"),
("search_web", "搜尋網路")
]

queries = [
"幫我查一下預算",
"查詢銷售數據",
"找一下AI新聞",
"幫我安排會議",
]

def generate_example():
tool = random.choice(tools)

if tool[0] == "query_database":
return {
"instruction": random.choice(queries),
"output": {
"tool": "query_database",
"params": {"query_str": "budget"}
}
}

if tool[0] == "add_calendar_event":
return {
"instruction": "明天下午三點安排會議",
"output": {
"tool": "add_calendar_event",
"params": {
"title": "會議",
"start_time": "tomorrow 15:00"
}
}
}

if tool[0] == "search_web":
return {
"instruction": "幫我找AI新聞",
"output": {
"tool": "search_web",
"params": {"query": "AI news"}
}
}

data = [generate_example() for _ in range(100)]

with open("tool_data.json", "w") as f:
json.dump(data, f, ensure_ascii=False, indent=2)

四、LLaMA / Qwen LoRA 微調腳本

train/train_lora.py

需要:

pip install transformers peft trl datasets accelerate bitsandbytes
</>Python
from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset
from peft import LoraConfig
from trl import SFTTrainer

model_name = "Qwen/Qwen2-7B"

tokenizer = AutoTokenizer.from_pretrained(model_name)

model = AutoModelForCausalLM.from_pretrained(
model_name,
load_in_4bit=True,
device_map="auto"
)

dataset = load_dataset("json", data_files="tool_data.json")

lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj","v_proj"],
lora_dropout=0.05,
)

trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
peft_config=lora_config,
dataset_text_field="instruction",
)

trainer.train()

trainer.save_model("agent_model")

五、RAG 系統

建立向量資料庫

rag/build_index.py

</>Python
from sentence_transformers import SentenceTransformer
import faiss
import pickle

docs = [
"2026 公司預算為 300 萬",
"AI 市場預計成長 20%",
]

model = SentenceTransformer("all-MiniLM-L6-v2")

embeddings = model.encode(docs)

index = faiss.IndexFlatL2(len(embeddings[0]))
index.add(embeddings)

faiss.write_index(index, "vector.index")

pickle.dump(docs, open("docs.pkl", "wb"))

檢索器

rag/retriever.py

</>Python
import faiss
import pickle
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")

index = faiss.read_index("vector.index")
docs = pickle.load(open("docs.pkl","rb"))

def retrieve(query):

emb = model.encode([query])

D,I = index.search(emb,3)

return [docs[i] for i in I[0]]

六、Tool 系統

tools/database_tool.py

</>Python
def query_database(query_str):

db = {
"budget":"2026 預算 300 萬"
}

return db.get(query_str,"not found")

七、Graph Memory

memory/graph_memory.py

</>Python
import networkx as nx

class GraphMemory:

def __init__(self):
self.graph = nx.DiGraph()

def add_memory(self, user, info):

self.graph.add_node(user)
self.graph.add_node(info)

self.graph.add_edge(user, info)

def query(self, user):

return list(self.graph.neighbors(user))

八、Multi-step Reasoning Agent

agent/planner.py

</>Python
from transformers import pipeline

llm = pipeline("text-generation", model="agent_model")

def plan(task):

prompt = f"""
Task: {task}

Think step by step and decide tools.
"""

return llm(prompt)[0]["generated_text"]

九、Tool Executor

agent/executor.py

</>Python
import json
from tools.database_tool import query_database

def execute(tool_call):

data = json.loads(tool_call)

if data["tool"] == "query_database":

return query_database(**data["params"])

十、ChatGPT 類 API

server/api.py

pip install fastapi uvicorn
</>Python
from fastapi import FastAPI
from agent.planner import plan

app = FastAPI()

@app.post("/chat")

def chat(msg: str):

result = plan(msg)

return {"response": result}

啟動:

uvicorn api:app --reload

十一、簡單 Chat UI

ui/chat_app.py

pip install streamlit
</>Python
import streamlit as st
import requests

st.title("AI Agent")

msg = st.text_input("Message")

if st.button("Send"):

r = requests.post(
"http://localhost:8000/chat",
json={"msg":msg}
)

st.write(r.json())

十二、4090 本地訓練流程

conda create -n agent python=3.10
conda activate agent

安裝:

pip install torch transformers accelerate peft trl bitsandbytes

GPU需求:

RTX4090 24GB

可訓練:

Qwen2 7B QLoRA
Llama3 8B QLoRA
Mistral 7B

十三、完整 Agent 流程

實際推理:

User

Planner LLM

Tool Selection

Tool Execution

RAG Retrieval

Graph Memory 更新

LLM Final Answer十四、升級到 AutoGPT 等級

再加:

1️⃣ Task Decomposition

Goal → Subtasks

2️⃣ Long-term memory

Weaviate
ChromaDB
Milvus

3️⃣ Self Reflection

LLM critic

4️⃣ Planning Graph

LangGraph

十五、最強本地開源組合(2026)

推薦:

LLM
Qwen2.5 14B

Embedding
bge-m3

Vector DB
Milvus

Agent
LangGraph

Fine-tune
QLoRA

4090 可以跑。



留言
avatar-img
sirius數字沙龍
11會員
234內容數
吃自助火鍋啦!不要客氣,想吃啥,請自行取用!
sirius數字沙龍的其他內容
2026/03/08
下面是一個工程級但仍然精簡、可在 RTX 4090 本地跑通的完整範例。 目標:建立一個 Tool-Calling LLM 助手。 包含四部分: 1️⃣ 100 條 Tool-Calling 訓練資料生成器 2️⃣ LLaMA / Qwen LoRA 微調腳本 3️⃣ 4090 本地訓練流
Thumbnail
2026/03/08
下面是一個工程級但仍然精簡、可在 RTX 4090 本地跑通的完整範例。 目標:建立一個 Tool-Calling LLM 助手。 包含四部分: 1️⃣ 100 條 Tool-Calling 訓練資料生成器 2️⃣ LLaMA / Qwen LoRA 微調腳本 3️⃣ 4090 本地訓練流
Thumbnail
2026/03/08
一、程式碼的問題 原本的: </>Python training_example = { "instruction": "幫我查一下預算表,並在明天下午三點排個審核會。", "output": '{"tool": "query_database",
Thumbnail
2026/03/08
一、程式碼的問題 原本的: </>Python training_example = { "instruction": "幫我查一下預算表,並在明天下午三點排個審核會。", "output": '{"tool": "query_database",
Thumbnail
2026/03/08
模型在腦中建立了一個簡化的「世界結構」,有些研究者發現 LLM 內部可能形成「世界模型」(world model),「世界模型」是近年 AI 研究中非常熱門的概念。許多研究者認為,一些大型語言模型在內部可能逐漸形成了某種簡化的世界結構表示。
Thumbnail
2026/03/08
模型在腦中建立了一個簡化的「世界結構」,有些研究者發現 LLM 內部可能形成「世界模型」(world model),「世界模型」是近年 AI 研究中非常熱門的概念。許多研究者認為,一些大型語言模型在內部可能逐漸形成了某種簡化的世界結構表示。
Thumbnail
看更多
你可能也想看
Thumbnail
本篇文章專為沒有程式基礎的讀者設計,帶您一步一步學習如何利用 AI 工具製作網頁小程式。從介紹 AI 如何理解需求、產出程式碼,到實際操作範例,再提供 10 種可直接使用的 AI 提示詞,讓您輕鬆將想法轉化為實用的互動網頁工具,延伸個人品牌與內容力。
Thumbnail
本篇文章專為沒有程式基礎的讀者設計,帶您一步一步學習如何利用 AI 工具製作網頁小程式。從介紹 AI 如何理解需求、產出程式碼,到實際操作範例,再提供 10 種可直接使用的 AI 提示詞,讓您輕鬆將想法轉化為實用的互動網頁工具,延伸個人品牌與內容力。
Thumbnail
在2026年的數位經濟體系中,AI不再只是輔助工具,而是演變成一種強大的生產要素。隨著「生成式 AI」與「大型語言模型」(LLM)的技術爆炸,個人與小規模團隊透過技術槓桿獲利的門檻已大幅降低。本文將深入探討當前最具可行性的AI賺錢方法變現模式,並結合實際案例與收益評估,幫助您在AI浪潮中找到精確
Thumbnail
在2026年的數位經濟體系中,AI不再只是輔助工具,而是演變成一種強大的生產要素。隨著「生成式 AI」與「大型語言模型」(LLM)的技術爆炸,個人與小規模團隊透過技術槓桿獲利的門檻已大幅降低。本文將深入探討當前最具可行性的AI賺錢方法變現模式,並結合實際案例與收益評估,幫助您在AI浪潮中找到精確
Thumbnail
「提示工程」(Prompt Engineering)的核心在於如何精準地與 AI 溝通,以獲取高品質的產出。這不僅是「問問題」,更像是「寫程式」或「下指令」。 一、 核心黃金法則 (The Golden Rules) 1. 賦予角色 (Assign a Persona) 不要讓 AI 只是個
Thumbnail
「提示工程」(Prompt Engineering)的核心在於如何精準地與 AI 溝通,以獲取高品質的產出。這不僅是「問問題」,更像是「寫程式」或「下指令」。 一、 核心黃金法則 (The Golden Rules) 1. 賦予角色 (Assign a Persona) 不要讓 AI 只是個
Thumbnail
近年來,ChatGPT快速成為全球熱門的文字生成工具,無論是撰寫文章、擬定策略,甚至創作故事,都展現出強大的語言能力。然而,許多使用者也發現,這款人工智慧在數學運算上經常出錯,為何AI在文字表現出色,卻在數字推理上失準?
Thumbnail
近年來,ChatGPT快速成為全球熱門的文字生成工具,無論是撰寫文章、擬定策略,甚至創作故事,都展現出強大的語言能力。然而,許多使用者也發現,這款人工智慧在數學運算上經常出錯,為何AI在文字表現出色,卻在數字推理上失準?
Thumbnail
隨著大型語言模型(LLM)在各行各業的應用愈發廣泛,使用者逐漸發現,雖然 ChatGPT 能快速生成文字,但其回應往往偏向膚淺、籠統,缺乏結構化推理。專家指出,其根本原因在於模型的運作邏輯—它本質上是對「下一個最可能出現的詞」進行統計預測,而非像人類般思考或分析問題。
Thumbnail
隨著大型語言模型(LLM)在各行各業的應用愈發廣泛,使用者逐漸發現,雖然 ChatGPT 能快速生成文字,但其回應往往偏向膚淺、籠統,缺乏結構化推理。專家指出,其根本原因在於模型的運作邏輯—它本質上是對「下一個最可能出現的詞」進行統計預測,而非像人類般思考或分析問題。
Thumbnail
▍開場引言 你是否曾經打開ChatGPT,卻發現自己問了問題得到答案,但總覺得「好像還少了點什麼」?明明別人能用AI產出完整行銷企劃、撰寫專業報告,但自己卻只能得到平凡的回覆。事實上,差別不在「誰的ChatGPT比較厲害」,而在「誰更懂得提問」。這就是所謂的提示工程。
Thumbnail
▍開場引言 你是否曾經打開ChatGPT,卻發現自己問了問題得到答案,但總覺得「好像還少了點什麼」?明明別人能用AI產出完整行銷企劃、撰寫專業報告,但自己卻只能得到平凡的回覆。事實上,差別不在「誰的ChatGPT比較厲害」,而在「誰更懂得提問」。這就是所謂的提示工程。
Thumbnail
ChatGPT 推出強大程式碼生成工具 Codex,實現 Vibe Coding,只要用自然語言描述需求,就能產生程式碼。本文介紹 Codex 的三種使用方法:CLI 工具、VS Code 擴充套件和 GitHub 專案連結,並以實際案例示範如何用 Codex 建立 Linktree 頁面。
Thumbnail
ChatGPT 推出強大程式碼生成工具 Codex,實現 Vibe Coding,只要用自然語言描述需求,就能產生程式碼。本文介紹 Codex 的三種使用方法:CLI 工具、VS Code 擴充套件和 GitHub 專案連結,並以實際案例示範如何用 Codex 建立 Linktree 頁面。
Thumbnail
為什麼報表總是讓人頭痛? 如果你是上班族,應該很熟悉「週報」這個痛苦儀式: 數據分散在不同表格 花時間整理格式 還要附上簡單分析 最後匯出 PDF,再寄信給主管 這些步驟加起來,常常就得花掉 2–3 小時。 我自己也曾因為週報,常常加班到晚上十點。直到我嘗試用 AI + 自動化工具,才
Thumbnail
為什麼報表總是讓人頭痛? 如果你是上班族,應該很熟悉「週報」這個痛苦儀式: 數據分散在不同表格 花時間整理格式 還要附上簡單分析 最後匯出 PDF,再寄信給主管 這些步驟加起來,常常就得花掉 2–3 小時。 我自己也曾因為週報,常常加班到晚上十點。直到我嘗試用 AI + 自動化工具,才
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News