五个超级容易上手的AI项目
提升AI技能,动手实践是最有效的途径。
很多人都执着于“新技术怎么用”,其实应该多想想“我能解决什么问题”。这样做,你的技术就能变成实实在在的价值,面试时也能令人印象深刻。
本文给大家推荐5个不同难度的AI项目,详细说明每个项目的步骤和所需Python库,能够帮助你快速上手。
这些项目都以解决问题为核心,读者可以直接实施,或用来启发自己解决问题。
1 简历优化(新手级)
求职过程中,调整简历匹配不同职位是个费时费力的活。但现在,用大型语言模型,这个任务变得简单了。下面是简化步骤:
- 把简历做成Markdown格式(ChatGPT可以协助)。
- 用不同的提示模板,结合简历和职位描述,生成新的Markdown简历。
- 通过OpenAI的Python API,让GPT-4o-mini帮你动态改写简历。
- 把Markdown转成HTML,再转成PDF。
用Python的好处是可以轻松扩展这个过程。下面是核心代码示例:
import openai
openai.api_key = "your_sk"
# 提示(假设md_resume和job_description已经被定义)
prompt = f"""
我有一份用Markdown格式编写的简历和一份工作描述。
请根据工作要求调整我的简历,同时保持专业语气。调整我的技能、经验和成就,以突出与职位最相关的点。
确保我的简历仍然反映我独特的资格和优势,但强调与工作描述匹配的技能和经验。
确保我的经验以符合所需资格的方式呈现。
保持清晰、简洁和专业。
以Markdown格式返回更新后的简历。
"""
# 调用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
)
# 提取响应
resume = response.choices[0].message.content
2 视频摘要生成器(新手级)
这个工具可以自动帮助看视频,提取关键点,生成摘要。
步骤简化如下:
- 从视频链接中提取YouTube视频ID。
- 获取视频文稿。
- 使用ChatGPT提示总结文稿。
- 用OpenAI的Python API自动化这个过程。
核心代码如下(YouTube视频):
import re
from youtube_transcript_api import YouTubeTranscriptApi
youtube_url = "video link here"
# 使用正则表达式提取视频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 自动整理PDF文件(中级)
我们可以利用AI自动按主题分类杂乱无章的PDF文件。
步骤如下:
- 提取每篇论文的摘要。
- 将摘要转换成文本向量,存入Pandas DataFrame。
- 用sklearn聚类算法分组相似的向量。
- 为每个分组创建文件夹,并移动文件。
这里是用sentence_transformers库生成文本向量的代码:
from sentence_transformers import SentenceTransformer
# 加载嵌入模型
model = SentenceTransformer("all-MiniLM-L6-v2")
# 将摘要存储在列表中
abstract_list = ["摘要1", "摘要2"]
# 计算嵌入
embeddings = model.encode(abstract_list)
4 多模态搜索(中级)
在开发搜索系统时,常见的挑战之一是重要信息常常嵌入在图表和图形中,不在纯文本中。
解决方案是使用多模态嵌入模型,让文本和图像在同一个空间里表示。步骤简化如下:
- 将PDF分割并提取图像。
- 利用模型将文本和图像转换为向量,存储于dataframe。
- 对所有PDF执行上述转换。
- 对用户查询应用相同模型处理。
- 计算查询与知识库项目的余弦相似度。
- 返回最相关的前k个结果。
PDF分割是项目核心,可采用固定字符数分割,保持部分重叠,同时记录文件名和页码等元数据。
以下是实现该过程的代码示例:
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()
# 将当前页面的文本分割成有重叠的块
start = 0
while start < len(page_text):
end = start + chunk_size
chunk = page_text[start:end]
# 将页码与文本块一起保存
chunks.append((page_num + 1, chunk))
# 移动到下一个有重叠的块
start += chunk_size - overlap_size
return chunks
# 提取参数
pdf_path = "your_file.pdf"
chunk_size = 1000 # 每个文本块的字符数
overlap_size = 200 # 重叠的字符数
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 知识库问答系统(高级)文档问答系统是AI项目中的热门选择。
如果文档已经分割并存入DataFrame,我们可以将多模态搜索工具升级为多模态RAG系统。步骤如下:
- 对知识库执行搜索(参考项目4)。
- 将用户查询与最相关的k个搜索结果一起,送入多模态模型。
- 使用Gradio创建一个简单的问答系统用户界面。
注:Llama 3.2 Vision在2025年前可通过Together AI的API免费使用。
这个项目结合了项目2和4的元素,并新增了用户界面。我们可以使用Gradio这样的工具,用几行代码就搭建起聊天界面。
以下是使用Gradio的示例代码:
import gradio as gr
def generate_response(message, history):
# 生成响应的代码
return response
demo = gr.ChatInterface(
fn=generate_response,
examples=[{"text": "Hello", "files": []}],
title="Echo Bot",
multimodal=True
)
demo.launch()
现在,借助ChatGPT等工具,AI项目开发变得快速高效。建议大家大胆尝试新项目,提升技能。
本文转载自 AI科技论谈,作者: AI科技论谈