五个超级容易上手的AI项目

发布于 2024-11-4 11:25
浏览
0收藏

提升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科技论谈

收藏
回复
举报
回复
相关推荐