5个你可以在这个周末搞定的AI项目(用Python) 从入门到高级都有

想提升AI技能,最好的方法就是自己动手做项目。不过,对于刚入门的小伙伴来说,想出到底该做什么项目可能挺难的。所以我在这里分享了5个可以快速上手的AI项目,难度从简单到复杂都有。我会一步一步讲解每个项目需要用到的Python库和实现方法。


图片来自Canva。 很多初学者在想项目点子的时候,最常犯的错误是先想着“怎么用这项新技术?”虽然这确实是个学新工具的好办法,但其实有更好的思路。 好的项目创意应该从“我能解决什么问题?”这个角度出发。这样不仅能在跟未来的雇主分享的时候有更好的故事,而且解决问题才是把技术技能转化成实际价值的关键。 下面这些项目都采用了这种“以问题为导向”的方式。你可以直接按这个思路实现这些想法,或者(更好)把它们作为灵感,用来解决你自己遇到的问题。


1)简历优化(入门级) 在申请工作的时候,一个有效但非常费时间的部分就是针对不同职位去调整简历。几年前要想把这个任务自动化,属于高级项目了,但现在有了大语言模型,做起来就跟调用API一样简单。 下面是如何实现这个自动化的步骤:
1.    把你的简历转换成Markdown版本(提示:ChatGPT可以帮你做到这一点)。
2.    试试不同的提示模板,这些模板接收你的Markdown简历和职位描述,然后输出一个新版的Markdown格式简历。
3.    用OpenAI的Python API去动态改写你的简历。
4.    用markdown和pdfkit库分别把Markdown文件转换成HTML和PDF格式。 需要用到的库:openai, markdown, pdfkit 虽然我们可以直接用ChatGPT搞定,但用Python实现的好处是更容易扩展这个过程。下面是第三步的一些入门代码。

python
Copy code
import openai
openai.api_key = "your_sk"

# prompt(假设md_resume和job_description已经定义)
prompt = f"""
我有一份Markdown格式的简历和一个职位描述。请调整我的简历,使它更符合职位要求,并保持专业语气。请调整我的技能、经验和成就,突出与职位最相关的部分。同时确保简历还能反映出我独特的资历和优势,但要着重强调符合职位描述的技能和经验。

### 这是我的简历(Markdown格式):
{md_resume}

### 这是职位描述:
{job_description}

请修改简历:
- 使用职位描述中的关键词和短语。
- 调整每个岗位下的要点,突出相关的技能和成就。
- 确保我的经验以符合职位要求的方式呈现。
- 全程保持清晰、简洁和专业。

返回修改后的简历,格式为Markdown。

"""

# 调用API
response = openai.ChatCompletion.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "你是一名乐于助人的助手。"},
        {"role": "user", "content": prompt}
    ], 
    temperature=0.25
)

# 提取响应
resume = response.choices[0].message.content


注意:ChatGPT对于写这种短代码片段(包括提示)特别有用。如果卡住了,试试让它帮你搞定第四步。

2)YouTube讲座自动总结(入门级) 我很喜欢把一些技术讲座加到YouTube的“稍后观看”列表里,但有时候过了很久也不一定会去看(有时还直接忘了 😅)。那不如搞个项目,让工具帮我看这些视频,并生成一个包含关键点的简短总结。 实现步骤如下:
1.    用正则表达式从视频链接里提取YouTube视频ID。
2.    用视频ID通过youtube-transcript-api提取视频字幕。
3.    试验不同的ChatGPT提示,让它能有效总结字幕内容。
4.    用OpenAI的Python API来自动化这个过程。 需要用到的库:openai, youtube-transcript-api 从技术上来说,这个项目跟第一个差不多。关键的不同点是我们需要自动提取视频的字幕,然后把它们输入到大模型中。 下面是一些入门代码:
 

python
Copy code
import re
from youtube_transcript_api import YouTubeTranscriptApi

youtube_url = "视频链接"

# 使用正则表达式提取视频ID
video_id_regex = r'(?:v=|\/)([0-9A-Za-z_-]{11}).*'
match = re.search(video_id_regex, youtube_url)

if match:
    video_id = match.group(1)
else:
    video_id = None

# 提取字幕
transcript = YouTubeTranscriptApi.get_transcript(video_id)
text_list = [transcript[i]['text'] for i in range(len(transcript))]
transcript_text = '\n'.join(text_list)


3)自动整理PDF(中级) “稍后观看”列表不是我唯一囤积技术信息的地方。另一个存货地就是我桌面,堆满了(118份)研究论文。要是手动把这些论文一个个看完,那是非常耗时的。那我们可以看看AI能怎么帮忙。 我们可以做一个工具,分析桌面上每个PDF的内容,然后根据主题把它们整理到不同的文件夹里。文本嵌入可以把每篇论文转换成密集向量表示,然后用传统机器学习算法(比如K-Means)来对类似的文章进行聚类。 具体步骤如下:
1.    用PyMuPDF读取每篇研究文章的摘要。
2.    用sentence-transformers库把摘要转换成文本嵌入,并存储在Pandas数据框中。
3.    用sklearn里的聚类算法把这些嵌入根据相似性分组。
4.    给每个簇创建一个文件夹,并把文件移动到对应文件夹里。 需要用到的库:PyMuPDF, sentence_transformers, pandas, sklearn 这个项目的关键步骤就是生成文本嵌入。下面是用sentence_transformers生成嵌入的代码片段:
 

python
Copy code
from sentence_transformers import SentenceTransformer

# 加载嵌入模型
model = SentenceTransformer("all-MiniLM-L6-v2")

# 把摘要存储在一个列表里
abstract_list = ["摘要1", "摘要2"]

# 计算嵌入
embeddings = model.encode(abstract_list)


4)多模态搜索(中级) 几个月前,我帮一个公司做了一套基础的RAG系统,用于搜索一组技术报告。在这些报告中,很多关键信息是以图表和图片的形式呈现的,而不是文字,这让搜索起来有些难度。 我们可以用多模态嵌入模型,把文本和图片表示到同一个空间,从而把这些视觉信息纳入搜索过程。 实现方式如下:
1.    给一个PDF,把它分块,并用PyMuPDF提取其中的图像。
2.    使用多模态嵌入模型(例如nomic-ai/nomic-embed-text-v1.5)将这些部分和图像表示成密集向量,并存储在数据框中。
3.    对知识库中的所有PDF重复这一过程。
4.    给定一个用户查询,通过相同的嵌入模型处理它。
5.    计算查询嵌入与知识库中每个条目之间的余弦相似度。
6.    返回前k个结果。 需要用到的库:PyMuPDF, transformers, pandas, sklearn 这个项目最重要的部分是如何拆分PDF。最简单的方法是使用固定字符数进行拆分,同时让块之间有些重叠。另外,还要捕捉每块的元数据,如文件名和页码。 下面是一些基础代码(由ChatGPT提供)。如果卡住了,可以请它帮你提取图像。

python
Copy code
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(pdf_path, chunk_size, overlap_size)# 显示带有页码的块
for i, (page_number, chunk) in enumerate(text_chunks):
    print(f"块 {i + 1} (页码 {page_number}):\n{chunk}\n{'-' * 50}")


5)知识库问答系统(高级) 去年我帮了差不多有100家公司和个人做AI项目。其中最受欢迎的项目就是文档问答系统。在上一个项目的基础上,我们可以用一个相对简单的方法实现它。 如果我们已经把文档分块并存储在数据框中,我们就可以把多模态搜索工具变成一个多模态RAG系统。 具体步骤如下:
1.    对知识库进行搜索(像项目4那样创建的知识库)。
2.    将用户查询与前k个搜索结果结合起来,并将它们传递给多模态模型。
3.    使用Gradio创建一个简单的问答系统用户界面。 需要用到的库:PyMuPDF, transformers, pandas, sklearn, together/openai, Gradio 注意:Llama 3.2 Vision通过Together AI的API免费提供到2025年。 这个项目本质上结合了项目2和项目4,但它增加了一个关键部分——用户界面。我们可以用Gradio这样的工具,只用几行代码就可以创建一个聊天界面。 以下是从Gradio文档中改编的示例代码:

python
Copy code
import gradio as gr
import time

def generate_response(message, history):
    """
        生成响应的代码
    """
    return response

demo = gr.ChatInterface(
    fn=generate_response, 
    examples=[{"text": "你好", "files": []}], 
    title="回声机器人", 
    multimodal=True)

demo.launch()


接下来怎么办?

得益于像ChatGPT和Cursor这样的工具,快速构建AI项目变得前所未有的简单。几年前花费我数小时甚至几天才能解决的问题,现在通过高级编码助手可以在几分钟内搞定。 我的最后建议是利用这些工具更快地学习,并在选择项目时大胆一些。找出问题,然后把项目实现时间控制在一个周末之内。”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值