2025 年 AI 工具全棧開(kāi)發(fā)引擎:從 PDF 到語(yǔ)音儀表板
從 PDFs 到視覺(jué)模型,從零樣本智能體到語(yǔ)音交互儀表板,我將 2025 年的頂級(jí) AI 工具融合成一個(gè)個(gè)人全棧開(kāi)發(fā)引擎,徹底改變了我的開(kāi)發(fā)方式。
1. 一切的起點(diǎn):技術(shù)棧
我曾被各種工具淹沒(méi):
? OCR 用一個(gè)庫(kù)
? 語(yǔ)音處理用另一個(gè)
? 視覺(jué)模型再來(lái)一個(gè)
? 嵌入、RAG、儀表板,每樣都有單獨(dú)的工具
于是,我做了每個(gè)不堪重負(fù)的開(kāi)發(fā)者最終會(huì)做的事:統(tǒng)一它們。
這就是魔法的開(kāi)始。
我的技術(shù)棧變成了:
? 模型:openai、together、transformers
? 文檔輸入/輸出:PyMuPDF、docx、pytesseract
? 嵌入:nomic-embed、sentence-transformers
? 存儲(chǔ):weaviate、chroma、qdrant
? 用戶(hù)界面與音頻:gradio、streamlit、whisper、elevenlabs
現(xiàn)在,我想構(gòu)建的任何東西——幾小時(shí)內(nèi)就能完成原型。
2. 文檔攝取引擎(PDF、圖像、Word)
我構(gòu)建的第一個(gè)東西?一個(gè)統(tǒng)一的文檔攝取引擎。
from PyPDF2 import PdfReader
import pytesseract
from PIL import Image
import docx
defextract_text(file_path):
if file_path.endswith(".pdf"):
pdf = PdfReader(file_path)
return"\n".join(page.extract_text() for page in pdf.pages)
elif file_path.endswith(".docx"):
doc = docx.Document(file_path)
return"\n".join(p.text for p in doc.paragraphs)
elif file_path.endswith((".jpg", ".png")):
img = Image.open(file_path)
return pytesseract.image_to_string(img)
else:
raise Exception("不支持的文件格式")
這讓我的機(jī)器人能夠從各種文檔中提取知識(shí)。
3. 使用 nomic-embed-text-v1.5 嵌入一切
目前最好的開(kāi)源嵌入模型?nomic-embed-text-v1.5。
from transformers import AutoTokenizer, AutoModel
import torch
class Embedder:
def __init__(self):
self.model = AutoModel.from_pretrained("nomic-ai/nomic-embed-text-v1.5")
self.tokenizer = AutoTokenizer.from_pretrained("nomic-ai/nomic-embed-text-v1.5")
def get_embedding(self, text):
tokens = self.tokenizer(text, return_tensors="pt", truncatinotallow=True, padding=True)
with torch.no_grad():
outputs = self.model(**tokens)
return outputs.last_hidden_state[:, 0, :].squeeze().numpy()
這讓我實(shí)現(xiàn)了對(duì) PDF、聊天記錄、圖像(轉(zhuǎn)換為文本)的語(yǔ)義搜索。
4. 使用 ChromaDB 構(gòu)建知識(shí)庫(kù)
我將所有內(nèi)容存儲(chǔ)在 Chroma 中——快速、本地、簡(jiǎn)單的向量存儲(chǔ)。
import chromadb
client = chromadb.Client()
collection = client.get_or_create_collection("my_docs")
def add_doc_to_store(doc_text, doc_id):
vector = embedder.get_embedding(doc_text)
collection.add(documents=[doc_text], ids=[doc_id], embeddings=[vector])
搜索只需一次調(diào)用:
def semantic_search(query):
vector = embedder.get_embedding(query)
return collection.query(query_embeddings=[vector], n_results=3)
現(xiàn)在我擁有了即刻可用的 RAG(檢索增強(qiáng)生成) 存儲(chǔ)。
5. 使用 OpenAI GPT-4o 實(shí)現(xiàn)多模態(tài)視覺(jué) + 文本搜索
如果 PDF 包含圖表或截圖?我用 GPT-4o 的視覺(jué)能力。
import openai
import base64
defimage_to_base64(path):
withopen(path, "rb") as f:
return base64.b64encode(f.read()).decode()
defask_image_question(image_path, question):
image_b64 = image_to_base64(image_path)
messages = [
{"role": "user", "content": [
{"type": "text", "text": question},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_b64}"}}
]}
]
response = openai.ChatCompletion.create(
model="gpt-4o",
messages=messages
)
return response.choices[0].message.content
它能:
? 總結(jié)圖表
? 解讀截圖
? 提取幻燈片中的文本
一個(gè) API,全面的圖像 + 語(yǔ)言理解。
6. 使用 Together AI 智能體實(shí)現(xiàn)零樣本工具使用
然后我玩得更大了。
Together AI 的零樣本智能體 API 讓我一次調(diào)用就能鏈接多個(gè)工具——爬蟲(chóng)、Python、瀏覽器、代碼解釋器。
import requests
def call_agent(question):
res = requests.post(
"https://api.together.xyz/v1/chat/completions",
headers={"Authorization": f"Bearer {TOGETHER_API_KEY}"},
jsnotallow={
"model": "zero-shot-agent",
"messages": [{"role": "user", "content": question}]
}
)
return res.json()["choices"][0]["message"]["content"]
我問(wèn):
“使用公開(kāi)數(shù)據(jù)源繪制巴基斯坦溫度趨勢(shì)圖。”
它生成了 Python 代碼,獲取數(shù)據(jù)集,運(yùn)行繪圖——全搞定。
7. 使用 Whisper + ElevenLabs 實(shí)現(xiàn)語(yǔ)音接口
我想和系統(tǒng)“對(duì)話”。
? 輸入:Whisper
? 輸出:ElevenLabs
import whisper
model = whisper.load_model("base")
def transcribe(audio_path):
result = model.transcribe(audio_path)
return result["text"]
然后:
import requests
def speak(text):
res = requests.post(
f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}",
headers={"xi-api-key": ELEVEN_KEY},
jsnotallow={"text": text}
)
with open("out.mp3", "wb") as f:
f.write(res.content)
我將兩者接入 Gradio 接口。我用語(yǔ)音提問(wèn),它用語(yǔ)音回答。
感覺(jué)像科幻電影。
8. 用戶(hù)界面:Gradio 儀表板,感覺(jué)像應(yīng)用
最后一步——讓它像個(gè)產(chǎn)品。
import gradio as gr
def answer_from_voice(audio):
transcript = transcribe(audio)
answer = call_agent(transcript)
speak(answer)
return transcript, answer, "out.mp3"
gr.Interface(
fn=answer_from_voice,
inputs=gr.Audio(source="microphone", type="filepath"),
outputs=["textbox", "textbox", gr.Audio()]
).launch()
現(xiàn)在任何人都能用它:
? 語(yǔ)音交互
? 學(xué)習(xí)知識(shí)
? 擴(kuò)展功能
9. 最終思考:我構(gòu)建了一個(gè) AI 操作系統(tǒng)
毫不夸張——這個(gè)設(shè)置成了我的 AI 操作系統(tǒng)。
我可以:
? 攝取文檔
? 分析 PDF 和圖表
? 讓它寫(xiě)代碼
? 讓它用語(yǔ)音回答
? 連接任何東西
全用 Python 實(shí)現(xiàn)。
應(yīng)用與助手的界限消失了。
憑借 GPT-4o、nomic、chroma、Together AI、whisper 等工具,我構(gòu)建了一個(gè)感覺(jué)“活”的平臺(tái)。
不僅僅是智能,而是:
? 實(shí)用
? 快速
? 互聯(lián)
這一切始于一個(gè)想法:
如果我不再思考“應(yīng)用”,而是思考“智能體”呢?
這就是 2025 年的 AI。