Generative AI for Beginners - 微软开源课程,用于从零开始构建生成式AI应用

Generative AI for Beginners - 微软开源课程,用于从零开始构建生成式AI应用

如果你最近在社交媒体上看到ChatGPT、Midjourney等AI工具的惊艳表现,心中涌起一个念头:“我也想学这个,但从哪里开始?”那么微软的这份开源课程正是为你准备的。Generative AI for Beginners是一个包含21节课程的完整学习路径,由微软的AI专家团队精心设计,专为想要进入生成式AI领域的开发者打造。不需要深厚的机器学习背景,不需要昂贵的硬件设备,只需要你具备基本的编程知识,就能通过这份课程逐步掌握提示工程、检索增强生成、智能体构建等核心技能,最终能够独立构建自己的生成式AI应用。

项目基本信息

信息项详情
项目名称generative-ai-for-beginners
GitHub地址https://github.com/microsoft/generative-ai-for-beginners
项目描述21 Lessons, Get Started Building with Generative AI
作者microsoft
开源协议MIT License
Stars108643
Forks58241
支持平台Windows / macOS / Linux / Web
最后更新2026-03-29

一、项目介绍

Generative AI for Beginners是微软推出的一套开源课程,旨在帮助开发者从零开始学习生成式AI技术。与市面上充斥的碎片化教程不同,这是一套系统化的学习方案,共包含21节课,每节课都围绕一个具体主题展开,从理论讲解到动手实践环环相扣。

课程的设计理念非常务实:你不需要成为AI研究员,就能开始构建AI应用。课程重点放在如何利用现有的AI模型和API来解决问题,而不是从头训练模型。这意味着你可以在较低的技术门槛下快速上手,将精力集中在应用层的创新上。

课程内容涵盖生成式AI的方方面面:从基础的提示工程、文本生成、图像生成,到进阶的检索增强生成、智能体构建、模型微调,再到应用落地的评估指标、部署策略和安全性考虑。每一课都包含以下标准结构:

  • 理论学习:通俗易懂的概念讲解
  • 代码示例:可以直接运行的Python代码
  • 练习题:巩固所学知识的动手任务
  • 扩展阅读:深入学习的资源链接

值得一提的是,课程特别强调实践性。每一课都配有Jupyter Notebook格式的代码文件,你可以在本地或云端运行这些代码,边学边练。课程还使用了Azure AI服务作为示例,但代码设计具有通用性,你可以轻松适配到其他AI服务商。

二、核心优势

  1. 零基础友好,循序渐进
    课程从最基础的概念讲起,比如“什么是生成式AI”和“大型语言模型如何工作”。即使你对机器学习一无所知,也能轻松跟上。随着课程深入,难度逐步提升,但始终保持在开发者能够掌握的范围内。
  2. 21节完整课程,系统化学习
    不是零散的博客文章或短视频,而是一套完整的课程体系。21节课覆盖了从入门到精通的完整路径,每节课大约需要1-2小时完成,你可以按照自己的节奏学习。
  3. 代码优先,动手实践
    每一课都包含可运行的代码示例,使用Python编写。课程假设你具备基础的Python知识,但不会要求太高。代码注释详尽,逻辑清晰,可以直接复制运行并修改实验。
  4. 微软官方出品,质量保障
    由微软的AI专家和Azure团队共同打造,内容准确、权威。课程会持续更新,跟进生成式AI领域的最新发展。目前已有超过10万星标,是GitHub上最受欢迎的AI学习资源之一。
  5. 多语言支持,覆盖主流技术
    课程以Python为主,但会介绍多种AI服务的API调用方式。同时,课程内容不绑定特定云服务商,学到的知识可以应用于OpenAI、Azure OpenAI、Anthropic等不同平台。
  6. 社区活跃,学习有伴
    超过10万的星标和5万多的分支意味着这是一个极其活跃的开源项目。你可以在Issues区提问、在Discussions中讨论,甚至参与课程的翻译和改进。学习过程中遇到问题,大概率已经有人问过并得到了解答。

三、适用场景

  • 想入门AI开发的程序员
    如果你已经熟悉编程(Python、JavaScript或类似语言),但对AI领域感到陌生,这份课程是最理想的起点。它会带你跨越“从0到1”的门槛,让你理解AI应用的构建方式,并能够动手实现第一个AI应用。
  • 产品经理和技术决策者
    对于需要理解AI技术边界和可能性的产品经理,课程的前半部分(提示工程、文本生成、图像生成)能够快速建立对AI能力的直观认识。你可以通过课程了解哪些应用场景是可行的,哪些技术方案是成熟的。
  • 创业者和独立开发者
    生成式AI正在催生大量创业机会。这份课程可以帮助你快速掌握核心技术,用最小的成本验证想法。课程中关于检索增强生成和智能体构建的内容,对于构建真正的AI产品至关重要。
  • 教育和培训从业者
    如果你需要教授他人生成式AI知识,这份课程提供了完整的大纲、示例代码和练习题目。MIT开源协议允许你在教学或培训中使用这些材料,大大降低了课程开发成本。
  • 企业开发团队
    对于计划将AI能力集成到产品中的企业团队,课程提供了从概念验证到生产部署的全流程指导。特别是关于评估指标、安全考量和应用设计的章节,对于企业级应用开发极具参考价值。

四、安装教程

这份课程本身不需要“安装”,你只需要准备好开发环境,克隆代码库即可开始学习。

1. 环境准备

确保你的系统已安装Python 3.8或更高版本:

python --version

如果没有安装,请从 python.org 下载并安装。

2. 克隆课程仓库

打开终端,执行以下命令:

git clone https://github.com/microsoft/generative-ai-for-beginners.git
cd generative-ai-for-beginners

3. 创建Python虚拟环境

为了隔离依赖,建议为课程创建独立的虚拟环境:

Windows:

python -m venv venv
venv\Scripts\activate

macOS/Linux:

python3 -m venv venv
source venv/bin/activate

4. 安装依赖

进入任意一个课程的代码目录,安装所需依赖。以第一课为例:

cd 01-introduction-to-generative-ai
pip install -r requirements.txt

如果你的网络环境需要代理,可以使用以下命令:

pip install -r requirements.txt --proxy http://your-proxy:port

5. 配置API密钥

课程中的代码需要调用AI服务的API。你可以选择使用OpenAI的API或Azure OpenAI服务。在项目根目录创建一个 .env 文件:

touch .env

编辑 .env 文件,添加你的API密钥:

# 如果使用OpenAI
OPENAI_API_KEY=sk-你的密钥

# 如果使用Azure OpenAI
AZURE_OPENAI_ENDPOINT=https://你的资源名.openai.azure.com/
AZURE_OPENAI_KEY=你的密钥

6. 验证环境

运行第一课的示例代码,确认一切正常:

cd 01-introduction-to-generative-ai
python prompt_basics.py

如果你能看到AI的响应输出,说明环境配置成功。

7. 在线学习选项

如果你不想在本地配置环境,也可以使用在线学习方式:

  • 在GitHub仓库中直接阅读课程材料(Markdown格式)
  • 使用GitHub Codespaces一键打开开发环境
  • 在Azure上创建免费的计算实例运行代码

五、使用示例

课程包含丰富的代码示例,这里精选几个代表性案例,展示你将学到什么。

示例1:提示工程基础

这是课程第一课的内容,教你如何设计有效的提示词:

# 01-introduction-to-generative-ai/prompt_basics.py
import openai
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

def simple_prompt(prompt):
    """基础提示词调用"""
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

# 示例1:直接提问
result1 = simple_prompt("什么是生成式AI?用一句话解释")
print("直接提问:", result1)

# 示例2:带约束的提示
result2 = simple_prompt("""
请用以下格式回答:
- 名称:[AI模型名称]
- 主要功能:[一句话描述]
- 适合场景:[列出3个场景]

主题:ChatGPT
""")
print("\n带约束的提示:\n", result2)

# 示例3:思维链提示
result3 = simple_prompt("""
请一步步思考:
1. 用户想要一个生日礼物推荐
2. 用户是15岁的男孩,喜欢科技产品
3. 预算在500元以内
4. 给出3个推荐并说明理由
""")
print("\n思维链提示:\n", result3)

示例2:检索增强生成

这是课程中非常实用的一个模块,展示了如何让AI访问外部知识库:

# 07-retrieval-augmented-generation/rag_example.py
import openai
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 模拟知识库
knowledge_base = [
    "微软的Azure OpenAI服务提供了GPT-4、GPT-3.5等模型",
    "提示工程是设计有效提示词以优化AI输出的技术",
    "检索增强生成结合了信息检索和文本生成的优势",
    "生成式AI可以用于文本创作、代码生成、图像生成等任务",
    "微调是在特定数据上继续训练预训练模型的过程"
]

def retrieve_relevant_context(query, documents, top_k=2):
    """检索与查询最相关的内容"""
    vectorizer = TfidfVectorizer()
    doc_vectors = vectorizer.fit_transform(documents)
    query_vector = vectorizer.transform([query])
    
    similarities = cosine_similarity(query_vector, doc_vectors)[0]
    top_indices = similarities.argsort()[-top_k:][::-1]
    
    return [documents[i] for i in top_indices]

def rag_answer(question):
    """使用RAG回答用户问题"""
    # 1. 检索相关上下文
    relevant_docs = retrieve_relevant_context(question, knowledge_base)
    context = "\n".join(relevant_docs)
    
    # 2. 构建增强提示
    prompt = f"""
    基于以下信息回答问题:
    
    相关信息:
    {context}
    
    问题:{question}
    
    请确保答案仅基于提供的信息。
    """
    
    # 3. 调用模型生成答案
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    
    return response.choices[0].message.content

# 测试
question = "什么是检索增强生成?"
answer = rag_answer(question)
print(f"问题: {question}")
print(f"答案: {answer}")

示例3:构建AI智能体

课程中关于智能体的内容展示了如何让AI自主调用工具:

# 15-building-agents/weather_agent.py
import openai
import json
import requests

class SimpleAgent:
    def __init__(self):
        self.tools = {
            "get_weather": self.get_weather,
            "calculate": self.calculate
        }
    
    def get_weather(self, city):
        """模拟获取天气信息"""
        # 实际应用中可调用真实天气API
        weather_data = {
            "北京": "晴天,25度",
            "上海": "多云,22度",
            "深圳": "小雨,28度"
        }
        return weather_data.get(city, "天气信息暂不可用")
    
    def calculate(self, expression):
        """计算数学表达式"""
        try:
            result = eval(expression)
            return f"计算结果: {result}"
        except:
            return "表达式无效"
    
    def decide_tool(self, user_input):
        """让AI决定使用哪个工具"""
        prompt = f"""
        用户输入: {user_input}
        
        可用工具:
        - get_weather: 查询天气,参数为城市名称
        - calculate: 计算数学表达式,参数为表达式字符串
        
        请以JSON格式输出你的决策:
        {{"tool": "工具名称", "params": "参数", "reason": "决策原因"}}
        
        如果不需要工具,输出:{{"tool": "none", "response": "直接回答"}}
        """
        
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            temperature=0
        )
        
        return json.loads(response.choices[0].message.content)
    
    def run(self, user_input):
        """运行智能体"""
        decision = self.decide_tool(user_input)
        
        if decision.get("tool") == "none":
            return decision.get("response", "我无法回答这个问题")
        
        tool_name = decision["tool"]
        params = decision["params"]
        
        if tool_name in self.tools:
            result = self.tools[tool_name](params)
            return f"工具执行结果: {result}"
        else:
            return "无法识别的工具"

# 测试智能体
agent = SimpleAgent()

print(agent.run("北京今天天气怎么样?"))
print(agent.run("帮我计算 123 + 456"))
print(agent.run("你好,很高兴见到你"))

示例4:图像生成应用

课程也涵盖多模态内容,这是图像生成的示例:

# 09-image-generation/image_gen_app.py
import openai
import requests
from PIL import Image
from io import BytesIO

def generate_image(prompt, size="1024x1024"):
    """使用DALL-E生成图像"""
    response = openai.Image.create(
        prompt=prompt,
        n=1,
        size=size
    )
    
    image_url = response['data'][0]['url']
    return image_url

def download_and_display_image(url):
    """下载并显示图像"""
    response = requests.get(url)
    img = Image.open(BytesIO(response.content))
    img.show()
    return img

# 生成图像
prompts = [
    "一只穿着宇航服的猫在月球上散步,卡通风格",
    "未来城市中的绿色花园,赛博朋克风格",
    "水彩画风格的宁静湖面,周围是秋天的树林"
]

for i, prompt in enumerate(prompts):
    print(f"生成图像 {i+1}: {prompt}")
    image_url = generate_image(prompt)
    print(f"图像URL: {image_url}")
    # download_and_display_image(image_url)  # 取消注释即可显示图像

示例5:评估与优化

课程最后部分包含评估AI应用质量的方法:

# 20-evaluation-and-metrics/evaluate.py
import openai
from typing import List, Dict

class AIEvaluator:
    def __init__(self):
        self.evaluation_criteria = {
            "相关性": "回答是否与问题直接相关",
            "准确性": "回答中的信息是否准确",
            "完整性": "回答是否覆盖了问题的关键点",
            "清晰度": "回答是否易于理解"
        }
    
    def evaluate_response(self, question: str, response: str) -> Dict[str, float]:
        """评估AI回答的质量"""
        prompt = f"""
        请评估以下AI回答的质量,按照1-5分打分:
        
        问题: {question}
        回答: {response}
        
        评分标准:
        - 相关性: {self.evaluation_criteria['相关性']}
        - 准确性: {self.evaluation_criteria['准确性']}
        - 完整性: {self.evaluation_criteria['完整性']}
        - 清晰度: {self.evaluation_criteria['清晰度']}
        
        请以JSON格式输出分数,例如:
        {{"相关性": 4, "准确性": 5, "完整性": 3, "清晰度": 4}}
        """
        
        result = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            temperature=0
        )
        
        try:
            import json
            scores = json.loads(result.choices[0].message.content)
            return scores
        except:
            return {"error": "评估失败"}
    
    def compare_responses(self, question: str, responses: List[str]) -> Dict:
        """比较多个回答的质量"""
        results = {}
        for i, response in enumerate(responses):
            scores = self.evaluate_response(question, response)
            results[f"response_{i+1}"] = {
                "scores": scores,
                "average": sum(scores.values()) / len(scores)
            }
        
        # 找出最佳回答
        best = max(results.items(), key=lambda x: x[1]["average"])
        results["best"] = best[0]
        
        return results

# 使用示例
evaluator = AIEvaluator()

question = "什么是生成式AI?"
responses = [
    "生成式AI是一种人工智能技术,可以创建新的内容。",
    "生成式AI指的是能够根据训练数据生成新内容的人工智能模型,包括文本、图像、音乐等。它通过学习数据中的模式和结构,创造出全新的、原创的内容,而不是简单地重复已有数据。",
    "就是能自己创造东西的AI。"
]

comparison = evaluator.compare_responses(question, responses)
print(json.dumps(comparison, indent=2, ensure_ascii=False))

六、常见问题

  1. 问题:我没有机器学习背景,能学会吗?
    解决方案:完全可以。课程的设计初衷就是面向没有AI背景的开发者。前几节课会详细介绍必要的概念和原理,但重点放在如何使用现成的API,而不是从头训练模型。你只需要具备基础的Python编程能力即可。
  2. 问题:课程需要付费的API密钥吗?
    解决方案:课程的大部分示例都设计为可以用免费或低成本的方式运行。OpenAI和Azure OpenAI都提供免费试用额度,足够完成课程中的练习。如果你不想使用付费服务,也可以选择开源模型(如通过Ollama运行本地模型),课程中有专门的章节介绍替代方案。
  3. 问题:课程更新频率如何?
    解决方案:作为微软官方维护的开源项目,课程会定期更新。每次主要AI模型发布新版本时,课程都会同步更新相关内容。你可以在GitHub上关注项目,获取更新通知。目前项目活跃度很高,Issues和PR响应迅速。
  4. 问题:课程有中文版吗?
    解决方案:有的。由于课程的受欢迎程度,社区已经完成了完整的中文翻译。你可以在GitHub仓库中找到 translations/zh-cn 目录,或者通过官方文档网站选择中文语言。所有21节课都已翻译完成,与英文版同步更新。
  5. 问题:学完课程后能做什么?
    解决方案:完成课程后,你将具备独立构建生成式AI应用的能力。你可以:

    • 构建自己的聊天机器人或AI助手
    • 开发基于文档的问答系统
    • 创建内容生成工具
    • 设计能够调用外部工具的AI智能体
    • 将AI能力集成到现有应用
      课程最后有一个“毕业项目”模块,引导你将所学知识整合成一个完整应用。
  6. 问题:课程会涉及法律和伦理问题吗?
    解决方案:会的。课程专门有一节关于AI应用的安全、伦理和法律考虑。内容包括:数据隐私、内容审核、偏见识别、版权问题、透明度和可解释性等。这些都是构建负责任的AI应用必须掌握的知识。

七、总结

Generative AI for Beginners是一份诚意满满的礼物,送给每一个想要踏入生成式AI领域的开发者。它没有故弄玄虚的数学公式,没有昂贵的硬件要求,只有21节精心设计的课程、数百个可运行的代码示例、以及一个热情活跃的学习社区。

这份课程最可贵的地方在于它的实用性可及性。你不需要成为AI研究员,不需要发表论文,只需要有探索新技术的热情,就能在几个星期内从零基础到能够独立构建AI应用。课程中每个概念都有代码佐证,每个知识点都有动手练习,确保你真正掌握,而不仅仅是“听说过”。

对于初学者来说,最难的不是学习,而是不知道从何学起。Generative AI for Beginners解决了这个问题——它为你规划好了完整的路径,你只需要按部就班地走完。如果你已经准备好开始这段旅程,现在就可以去GitHub克隆这个项目,打开第一课的Jupyter Notebook,写下你人生中第一个AI应用的代码。

已有 1099 条评论

    1. Sarah Sarah

      课程有完整的中文翻译,这个对国内开发者太友好了。每一课都包含理论学习、代码示例、练习题和扩展阅读,结构很规范。强烈推荐给所有想入门AI开发的同事。

    2. Michael Michael

      那个检索增强生成的例子太实用了!之前做文档问答系统总是不知道怎么做,RAG的概念也一知半解。跟着课程代码一步步跑下来,终于理解了向量检索和上下文注入的原理。

    3. Jessica Jessica

      作为前端开发,我一直觉得AI离我很远。这份课程让我明白,不需要成为AI研究员也能构建AI应用。课程代码写得特别清晰,注释详尽,跑通第一个提示词示例的时候真的很有成就感。

    4. Thomas Thomas

      10万star的开源课程,微软这次真的贡献了一个宝藏!21节课从提示工程到智能体构建,覆盖了生成式AI的方方面面。我花了两个周末走完了Python路径,现在能自己写RAG应用了,收获巨大。