五個(gè)超級(jí)容易上手的AI項(xiàng)目
提升AI技能,動(dòng)手實(shí)踐是最有效的途徑。
很多人都執(zhí)著于“新技術(shù)怎么用”,其實(shí)應(yīng)該多想想“我能解決什么問題”。這樣做,你的技術(shù)就能變成實(shí)實(shí)在在的價(jià)值,面試時(shí)也能令人印象深刻。
本文給大家推薦5個(gè)不同難度的AI項(xiàng)目,詳細(xì)說明每個(gè)項(xiàng)目的步驟和所需Python庫,能夠幫助你快速上手。
這些項(xiàng)目都以解決問題為核心,讀者可以直接實(shí)施,或用來啟發(fā)自己解決問題。
1 簡歷優(yōu)化(新手級(jí))
求職過程中,調(diào)整簡歷匹配不同職位是個(gè)費(fèi)時(shí)費(fèi)力的活。但現(xiàn)在,用大型語言模型,這個(gè)任務(wù)變得簡單了。下面是簡化步驟:
- 把簡歷做成Markdown格式(ChatGPT可以協(xié)助)。
- 用不同的提示模板,結(jié)合簡歷和職位描述,生成新的Markdown簡歷。
- 通過OpenAI的Python API,讓GPT-4o-mini幫你動(dòng)態(tài)改寫簡歷。
- 把Markdown轉(zhuǎn)成HTML,再轉(zhuǎn)成PDF。
用Python的好處是可以輕松擴(kuò)展這個(gè)過程。下面是核心代碼示例:
import openai
openai.api_key = "your_sk"
# 提示(假設(shè)md_resume和job_description已經(jīng)被定義)
prompt = f"""
我有一份用Markdown格式編寫的簡歷和一份工作描述。
請(qǐng)根據(jù)工作要求調(diào)整我的簡歷,同時(shí)保持專業(yè)語氣。調(diào)整我的技能、經(jīng)驗(yàn)和成就,以突出與職位最相關(guān)的點(diǎn)。
確保我的簡歷仍然反映我獨(dú)特的資格和優(yōu)勢,但強(qiáng)調(diào)與工作描述匹配的技能和經(jīng)驗(yàn)。
確保我的經(jīng)驗(yàn)以符合所需資格的方式呈現(xiàn)。
保持清晰、簡潔和專業(yè)。
以Markdown格式返回更新后的簡歷。
"""
# 調(diào)用API
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
],
temperature = 0.25
)
# 提取響應(yīng)
resume = response.choices[0].message.content
2 視頻摘要生成器(新手級(jí))
這個(gè)工具可以自動(dòng)幫助看視頻,提取關(guān)鍵點(diǎn),生成摘要。
步驟簡化如下:
- 從視頻鏈接中提取YouTube視頻ID。
- 獲取視頻文稿。
- 使用ChatGPT提示總結(jié)文稿。
- 用OpenAI的Python API自動(dòng)化這個(gè)過程。
核心代碼如下(YouTube視頻):
import re
from youtube_transcript_api import YouTubeTranscriptApi
youtube_url = "video link here"
# 使用正則表達(dá)式提取視頻ID
video_id_regex = r'(?:v=|\/)([0-9A-Za-z_-]{11}).*'
match = re.search(video_id_regex, youtube_url)
if match:
return match.group(1)
else:
return None
# 提取文稿
text_list = [transcript[i]['text'] for i in range(len(transcript))]
transcript_text = '\n'.join(text_list)
3 自動(dòng)整理PDF文件(中級(jí))
我們可以利用AI自動(dòng)按主題分類雜亂無章的PDF文件。
步驟如下:
- 提取每篇論文的摘要。
- 將摘要轉(zhuǎn)換成文本向量,存入Pandas DataFrame。
- 用sklearn聚類算法分組相似的向量。
- 為每個(gè)分組創(chuàng)建文件夾,并移動(dòng)文件。
這里是用sentence_transformers庫生成文本向量的代碼:
from sentence_transformers import SentenceTransformer
# 加載嵌入模型
model = SentenceTransformer("all-MiniLM-L6-v2")
# 將摘要存儲(chǔ)在列表中
abstract_list = ["摘要1", "摘要2"]
# 計(jì)算嵌入
embeddings = model.encode(abstract_list)
4 多模態(tài)搜索(中級(jí))
在開發(fā)搜索系統(tǒng)時(shí),常見的挑戰(zhàn)之一是重要信息常常嵌入在圖表和圖形中,不在純文本中。
解決方案是使用多模態(tài)嵌入模型,讓文本和圖像在同一個(gè)空間里表示。步驟簡化如下:
- 將PDF分割并提取圖像。
- 利用模型將文本和圖像轉(zhuǎn)換為向量,存儲(chǔ)于dataframe。
- 對(duì)所有PDF執(zhí)行上述轉(zhuǎn)換。
- 對(duì)用戶查詢應(yīng)用相同模型處理。
- 計(jì)算查詢與知識(shí)庫項(xiàng)目的余弦相似度。
- 返回最相關(guān)的前k個(gè)結(jié)果。
PDF分割是項(xiàng)目核心,可采用固定字符數(shù)分割,保持部分重疊,同時(shí)記錄文件名和頁碼等元數(shù)據(jù)。
以下是實(shí)現(xiàn)該過程的代碼示例:
import fitz # PyMuPDF
def extract_text_chunks(pdf_path, chunk_size, overlap_size):
# 打開PDF文件
pdf_document = fitz.open(pdf_path)
chunks = []
# 遍歷PDF的每一頁
for page_num in range(len(pdf_document)):
page = pdf_document[page_num]
page_text = page.get_text()
# 將當(dāng)前頁面的文本分割成有重疊的塊
start = 0
while start < len(page_text):
end = start + chunk_size
chunk = page_text[start:end]
# 將頁碼與文本塊一起保存
chunks.append((page_num + 1, chunk))
# 移動(dòng)到下一個(gè)有重疊的塊
start += chunk_size - overlap_size
return chunks
# 提取參數(shù)
pdf_path = "your_file.pdf"
chunk_size = 1000 # 每個(gè)文本塊的字符數(shù)
overlap_size = 200 # 重疊的字符數(shù)
text_chunks = extract_text_chunks_with_page_numbers(pdf_path, chunk_size, overlap_size)
# 顯示帶有頁碼的文本塊
for i, (page_number, chunk) in enumerate(text_chunks):
print(f"Chunk {i + 1} (Page {page_number}):\n{chunk}\n{'-' * 50}")
5 知識(shí)庫問答系統(tǒng)(高級(jí))文檔問答系統(tǒng)是AI項(xiàng)目中的熱門選擇。
如果文檔已經(jīng)分割并存入DataFrame,我們可以將多模態(tài)搜索工具升級(jí)為多模態(tài)RAG系統(tǒng)。步驟如下:
- 對(duì)知識(shí)庫執(zhí)行搜索(參考項(xiàng)目4)。
- 將用戶查詢與最相關(guān)的k個(gè)搜索結(jié)果一起,送入多模態(tài)模型。
- 使用Gradio創(chuàng)建一個(gè)簡單的問答系統(tǒng)用戶界面。
注:Llama 3.2 Vision在2025年前可通過Together AI的API免費(fèi)使用。
這個(gè)項(xiàng)目結(jié)合了項(xiàng)目2和4的元素,并新增了用戶界面。我們可以使用Gradio這樣的工具,用幾行代碼就搭建起聊天界面。
以下是使用Gradio的示例代碼:
import gradio as gr
def generate_response(message, history):
# 生成響應(yīng)的代碼
return response
demo = gr.ChatInterface(
fn=generate_response,
examples=[{"text": "Hello", "files": []}],
title="Echo Bot",
multimodal=True
)
demo.launch()
現(xiàn)在,借助ChatGPT等工具,AI項(xiàng)目開發(fā)變得快速高效。建議大家大膽嘗試新項(xiàng)目,提升技能。
本文轉(zhuǎn)載自 ??AI科技論談??,作者: AI科技論談
