工程級進階 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數字沙龍
17會員
422內容數
吃自助火鍋啦!不要客氣,想吃啥,請自行取用!
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
隨著大型語言模型(LLM)在各行各業的應用愈發廣泛,使用者逐漸發現,雖然 ChatGPT 能快速生成文字,但其回應往往偏向膚淺、籠統,缺乏結構化推理。專家指出,其根本原因在於模型的運作邏輯—它本質上是對「下一個最可能出現的詞」進行統計預測,而非像人類般思考或分析問題。
Thumbnail
隨著大型語言模型(LLM)在各行各業的應用愈發廣泛,使用者逐漸發現,雖然 ChatGPT 能快速生成文字,但其回應往往偏向膚淺、籠統,缺乏結構化推理。專家指出,其根本原因在於模型的運作邏輯—它本質上是對「下一個最可能出現的詞」進行統計預測,而非像人類般思考或分析問題。
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
本篇文章專為沒有程式基礎的讀者設計,帶您一步一步學習如何利用 AI 工具製作網頁小程式。從介紹 AI 如何理解需求、產出程式碼,到實際操作範例,再提供 10 種可直接使用的 AI 提示詞,讓您輕鬆將想法轉化為實用的互動網頁工具,延伸個人品牌與內容力。
Thumbnail
本篇文章專為沒有程式基礎的讀者設計,帶您一步一步學習如何利用 AI 工具製作網頁小程式。從介紹 AI 如何理解需求、產出程式碼,到實際操作範例,再提供 10 種可直接使用的 AI 提示詞,讓您輕鬆將想法轉化為實用的互動網頁工具,延伸個人品牌與內容力。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
為什麼報表總是讓人頭痛? 如果你是上班族,應該很熟悉「週報」這個痛苦儀式: 數據分散在不同表格 花時間整理格式 還要附上簡單分析 最後匯出 PDF,再寄信給主管 這些步驟加起來,常常就得花掉 2–3 小時。 我自己也曾因為週報,常常加班到晚上十點。直到我嘗試用 AI + 自動化工具,才
Thumbnail
為什麼報表總是讓人頭痛? 如果你是上班族,應該很熟悉「週報」這個痛苦儀式: 數據分散在不同表格 花時間整理格式 還要附上簡單分析 最後匯出 PDF,再寄信給主管 這些步驟加起來,常常就得花掉 2–3 小時。 我自己也曾因為週報,常常加班到晚上十點。直到我嘗試用 AI + 自動化工具,才
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
在2026年的數位經濟體系中,AI不再只是輔助工具,而是演變成一種強大的生產要素。隨著「生成式 AI」與「大型語言模型」(LLM)的技術爆炸,個人與小規模團隊透過技術槓桿獲利的門檻已大幅降低。本文將深入探討當前最具可行性的AI賺錢方法變現模式,並結合實際案例與收益評估,幫助您在AI浪潮中找到精確
Thumbnail
在2026年的數位經濟體系中,AI不再只是輔助工具,而是演變成一種強大的生產要素。隨著「生成式 AI」與「大型語言模型」(LLM)的技術爆炸,個人與小規模團隊透過技術槓桿獲利的門檻已大幅降低。本文將深入探討當前最具可行性的AI賺錢方法變現模式,並結合實際案例與收益評估,幫助您在AI浪潮中找到精確
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
近年來,ChatGPT快速成為全球熱門的文字生成工具,無論是撰寫文章、擬定策略,甚至創作故事,都展現出強大的語言能力。然而,許多使用者也發現,這款人工智慧在數學運算上經常出錯,為何AI在文字表現出色,卻在數字推理上失準?
Thumbnail
近年來,ChatGPT快速成為全球熱門的文字生成工具,無論是撰寫文章、擬定策略,甚至創作故事,都展現出強大的語言能力。然而,許多使用者也發現,這款人工智慧在數學運算上經常出錯,為何AI在文字表現出色,卻在數字推理上失準?
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
▍開場引言 你是否曾經打開ChatGPT,卻發現自己問了問題得到答案,但總覺得「好像還少了點什麼」?明明別人能用AI產出完整行銷企劃、撰寫專業報告,但自己卻只能得到平凡的回覆。事實上,差別不在「誰的ChatGPT比較厲害」,而在「誰更懂得提問」。這就是所謂的提示工程。
Thumbnail
▍開場引言 你是否曾經打開ChatGPT,卻發現自己問了問題得到答案,但總覺得「好像還少了點什麼」?明明別人能用AI產出完整行銷企劃、撰寫專業報告,但自己卻只能得到平凡的回覆。事實上,差別不在「誰的ChatGPT比較厲害」,而在「誰更懂得提問」。這就是所謂的提示工程。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News