# 定义一个函数,使用大语言模型判断相关性
def is_relevant(text, llm_model):
    prompt = f"""
    请判断以下日记内容是否主要描述餐厅及其特色菜肴。
    只回答“相关”或“不相关”。

    日记内容:
    {text}
    """
    response = llm_model.generate(prompt) # 假设有一个生成响应的函数
    return response.strip()

# 假设我们已经初始化了一个大语言模型对象 `llm`
print(is_relevant(tokyo_text, llm))
print(is_relevant(cape_town_text, llm))

我知道当前目录下有五个文件:Cape_Town.txtMadrid.txtRio_de_Janeiro.txtSydney.txtTokyo.txt

那么,要编写Python代码来处理所有五个文件,你还记得代码结构吗?

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_3.png

使用循环处理多个文件

我们可以使用 for 循环来遍历多个文件。

我将设置 files 等于这五个文件名的列表。在Python中,方括号 [] 用于创建列表。

# 定义要处理的文件列表
files = ['Cape_Town.txt', 'Madrid.txt', 'Rio_de_Janeiro.txt', 'Sydney.txt', 'Tokyo.txt']

# 遍历每个文件
for file in files:
    # 打开并读取文件
    journal_text = read_file(file)
    
    # 创建提示词
    prompt = f"""
    请判断以下日记内容是否主要描述餐厅及其特色菜肴。
    只回答“相关”或“不相关”。

    日记内容:
    {journal_text}
    """
    
    # 使用大语言模型获取响应
    response = llm.generate(prompt)
    
    # 打印结果:文件名 -> 是否相关
    print(f"{file} -> {response.strip()}")

运行这段代码,看看结果如何。它运行成功了。

开普敦的文章是相关的,但 Madrid.txt 不相关,其他文章是相关的。因此,如果你有100或200个文档的集合,你可以使用这样的循环让Python自动为你读取所有文档,并仅指出哪些是与美食相关的。

检查不相关的文档

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_5.png

让我们查看一下 Madrid.txt 的内容。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_7.png

# 加载并打印马德里的日记
madrid_text = read_file('Madrid.txt')
print(madrid_text)

你会发现这是一篇关于马德里的精彩文章,但并没有特别关注美食,这就是为什么大语言模型判断 Madrid.txt 不相关。

顺便说一下,我鼓励你尝试5种不同的提示词。例如,你可以说:“请用‘是’或‘否’回答:这篇日记是否描述了餐厅和食物菜肴?” 有多种方法可以实现这一点。

更高级的做法是让它只打印出相关文件的名称。这将是一个相当高级的练习。如果你想尝试,也可以向AI聊天机器人伙伴寻求帮助。

作为一个有趣的知识点,如果你好奇我们刚才所做工作的名称:我使用AI来确定文本是否相关。这项任务有一个特定的名称。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_9.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_10.png

我们在这里构建的是一个文本分类系统

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_12.png

总结与练习

我鼓励你尝试这段代码,并修改它以完成不同的任务。请务必尝试不同的提示词,看看会得到什么不同的结果。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_14.png

我希望你能看到,像这样一小段代码如何能够为你读取(在这个例子中是五个,甚至更多)文档,并快速帮助你识别出最相关的文档。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_15.png

编程的好处在于,你可以让计算机执行各种各样的事情。希望你玩得开心。

在下一课中,我们将学习如何选取一篇相关的文章,并从中提取关键信息,例如餐厅名称和菜肴名称。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/8153a692c8a118d29243a9990717ec68_17.png

下节课见。

024:从日记条目中提取餐厅信息 🍽️

在本节课中,我们将学习如何利用大语言模型从文本中提取特定信息,例如餐厅名称和菜品。我们将看到如何高亮显示这些信息,并将其保存为易于阅读和使用的格式,如HTML和CSV文件。

上一节我们介绍了文本分类,即判断一段文本是否与食物相关。本节中,我们将深入一步,看看如何让大语言模型从文档中提取特定的信息片段。

高亮显示餐厅与菜品信息

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_1.png

首先,我们来看如何从日记条目中提取餐厅和菜品信息,并用不同颜色高亮显示它们,以便于阅读。

以下代码用于读取里约热内卢的日记文件:

journal_rio_de_janeiro = read_journal("Rio de Janeiro.txt")

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_3.png

接下来,我们构建一个提示词,要求大语言模型识别并高亮餐厅和菜品。我们指定输出格式为HTML,以便在网页中显示丰富的格式。

prompt = f"""
Given the following journal entry from a food critic, identify all restaurants and the best dishes mentioned.
Highlight and bold each restaurant and best dish within the original text.
Provide the output as HTML suitable for display in a Jupyter notebook.
Journal entry: {journal_rio_de_janeiro}
"""

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_5.png

调用大语言模型获取响应,并显示生成的HTML:

response_html = get_completion(prompt)
display(HTML(response_html))

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_7.png

运行后,输出结果会将餐厅名称标记为橙色,菜品名称标记为蓝色,并以HTML段落形式呈现。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_9.png

我们对东京的日记条目执行相同的操作:

journal_tokyo = read_journal("Tokyo.txt")
response_html_tokyo = get_completion(prompt)
display(HTML(response_html_tokyo))

尽管东京日记的格式与里约热内卢的截然不同,大语言模型依然能够成功处理并高亮相关信息。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_11.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_12.png

你可以尝试修改提示词,例如将甜点高亮为绿色,或在每种食材旁添加表情符号。

提取信息并保存为CSV格式

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_14.png

除了高亮显示,我们还可以修改提示词,直接从文本中提取结构化的信息列表。

以下提示词要求模型提取所有餐厅及其对应菜品,并以CSV格式输出:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_16.png

prompt_extract = f"""
Extract the comprehensive list of restaurants and their respective dishes mentioned in the following journal entry.
Ensure each restaurant name is accurately identified and listed.
Provide your answer in CSV format, ready to save.
Journal entry: {journal_rio_de_janeiro}
"""

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_17.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_18.png

运行此提示词,会得到类似下面的CSV格式输出:

Restaurant, Dish
A Confeitaria Colombo, Coxinha
Porcão Rio's, Picanha
...

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_20.png

CSV(逗号分隔值)是一种常见的表格数据存储格式。第一行是列标题,后续每一行代表一条数据记录。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_22.png

批量处理多个日记文件

为了高效处理多个文件,我们可以使用循环。以下是处理一系列城市日记文件的代码示例:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_24.png

files = ["Cape Town.txt", "Istanbul.txt", "New York.txt", "Paris.txt", "Rio de Janeiro.txt", "Sydney.txt", "Tokyo.txt"]

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_25.png>

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_26.png>

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_27.png>

for file in files:
    journal = read_journal(file)
    response = get_completion(prompt_extract)
    print(f"--- {file} ---")
    print(response)
    print()  # 打印空行分隔

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_29.png

这段代码会依次读取列表中的每个文件,提取餐厅和菜品信息,并打印出CSV格式的结果。这展示了当需要分析的文件数量增加时,大语言模型如何显著提升效率。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_31.png

将数据保存到文件

处理完数据后,我们可能需要将其保存到本地文件中以供后续使用。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_33.png

以下是如何将之前生成的HTML响应保存到一个新文件中:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_35.png

# 以写入模式打开文件
f = open("highlighted_rio.html", "w")
# 将HTML内容写入文件
f.write(response_html)
# 关闭文件
f.close()

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_37.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_39.png

与读取文件的主要区别在于,打开文件时使用模式 "w"(写入)而非 "r"(读取),并使用 f.write() 方法写入内容。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_41.png

保存后,你可以在本地使用网页浏览器打开这个 .html 文件,查看高亮格式化的结果。

总结

本节课中我们一起学习了如何利用大语言模型进行信息提取。我们掌握了两个核心技能:

  1. 高亮关键信息:通过构造特定的提示词,让模型在原文中识别并高亮显示餐厅和菜品,输出为美观的HTML格式。

  2. 提取结构化数据:修改提示词,让模型提取出餐厅和菜品的列表,并以CSV格式输出,便于后续分析和使用。

此外,我们还学习了如何使用Python代码将模型生成的结果保存到本地文件中。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/fbb3308f34a1be765ffecc93c9c97c62_43.png

在下一节课中,我们将学习如何加载本节课生成的这种CSV格式数据,并利用它来帮助规划你自己的假期行程。请务必完成本Jupyter笔记本末尾的练习,我们下节课再见。

025:使用CSV文件进行假期规划 📅

在本节课中,我们将要学习如何处理结构化的数据,特别是CSV文件。我们将了解如何读取CSV文件中的数据,如何筛选特定信息,以及如何结合AI语言模型来生成个性化的假期行程规划。


文本文件非常通用,可以用多种不同方式格式化。因此,我们有时称它们为非结构化数据,因为文本文件几乎没有预定义的结构。

相比之下,电子表格具有明确定义的格式或结构,数据整齐地排列在行和列中。这种看起来像带有行和列的表格的数据被称为结构化数据

在Python中,处理像电子表格这样的结构化数据与处理非结构化数据(如文本)的方式略有不同。通常,你甚至可以不使用AI语言模型,而直接用Python代码来处理它。

例如,如果你一直在电子表格中为梦想假期的每个目的地保存信息,其中一列指定了国家,那么你可以使用Python来帮助你按位置筛选,并查看特定国家(如日本)的所有停留点。

让我们来看看如何完成所有这些操作。


https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_1.png

读取CSV文件

在本节中,我们将学习如何将CSV文件中的数据加载到Python程序中。

我们将使用一个行程表示例,该行程表在表格中看起来像这样。每一行对应一个目的地,包含到达和离开时间。如果你将这个表格表示为CSV文件,它可能看起来像这样,其中每一行用逗号分隔四个值,对应表格的四个列。

如果你在计算机上有这样一个CSV文件,你可以将这些数据加载到Python中。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_3.png

以下是加载数据的代码:

import csv

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_5.png>

itinerary = []
with open('itinerary.csv', mode='r') as file:
    csv_reader = csv.DictReader(file)
    for row in csv_reader:
        itinerary.append(row)

让我们详细解释每一行代码的作用:

  • import csv:导入Python内置的csv模块,它提供了处理CSV文件的功能。

  • itinerary = []:创建一个空列表,用于存储从CSV文件中读取的数据。

  • with open('itinerary.csv', mode='r') as file::以读取模式打开名为itinerary.csv的文件。with语句确保文件在使用后会被正确关闭。

  • csv_reader = csv.DictReader(file):创建一个DictReader对象。它会将CSV文件的每一行读取为一个字典,其中键是CSV文件第一行的列标题(如“arrival”, “departure”),值是对应单元格的内容。

  • for row in csv_reader::遍历csv_reader对象中的每一行。

  • itinerary.append(row):将每一行(一个字典)添加到itinerary列表中。

运行这段代码后,itinerary变量将包含一个字典列表。例如,要访问第一个目的地的国家信息,可以使用itinerary[0][‘country’],这将返回’USA’

为了更清晰地查看数据,我们可以使用一个辅助函数来美观地打印表格。运行display_table(itinerary)会以更易读的表格形式显示数据。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_7.png


筛选结构化数据

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_9.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_10.png

上一节我们介绍了如何将CSV数据加载到Python中。本节中我们来看看如何基于特定条件筛选这些结构化数据。

对于像表格这样的结构化数据,即使不使用AI语言模型,筛选信息也通常更加可行。例如,如果你想获取所有位于日本的目的地,可以这样做:

filtered_data = []
for trip_stop in itinerary:
    if trip_stop[‘country’] == ‘Japan’:
        filtered_data.append(trip_stop)
display_table(filtered_data)

这段代码会遍历itinerary列表中的每个目的地(每个目的地是一个字典)。如果某个目的地的’country’键的值等于’Japan’,就将这个目的地字典添加到filtered_data列表中。最后,使用display_table函数显示筛选后的结果。


结合AI生成行程建议

在能够读取和筛选数据之后,现在让我们利用这些数据来生成个性化的行程建议。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_12.png

我们将从行程中检索第一个目的地(例如,美国纽约市),然后使用AI语言模型为其生成详细的每日活动安排。

# 获取第一个目的地
trip_stop = itinerary[0]
city = trip_stop[‘city’]
country = trip_stop[‘country’]
arrival = trip_stop[‘arrival’]
departure = trip_stop[‘departure’]

# 构建提示词
prompt = f”I’ll visit {city}, {country} from {arrival} to {departure}. Please create a detailed daily itinerary.<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_14.png>

# 调用AI模型并获取响应
response = get_completion(prompt)
print(response)

这段代码首先从itinerary列表的第一个元素(索引0)中提取出城市、国家、到达和离开日期等信息。然后,它将这些信息填充到一个提示词模板中,该模板请求AI为这段停留时间创建详细的每日行程。最后,调用AI模型并打印出生成的行程建议。

例如,如果恰逢美国独立日(7月4日),AI可能会建议观看独立日烟花表演。我鼓励你在课后尝试自己的变体,修改目的地或日期,看看能生成哪些有趣的行程。


总结

本节课中我们一起学习了如何使用Python处理CSV格式的结构化数据。我们掌握了三个核心技能:

  1. 读取CSV文件:使用csv.DictReader将表格数据加载为字典列表。

  2. 筛选数据:通过循环和条件判断,从数据集中提取出符合特定条件(如国家等于“日本”)的子集。

  3. 结合AI生成内容:利用从CSV中提取的具体信息(如地点、日期),构建精准的提示词,从而获得个性化的AI生成内容(如旅行行程)。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_16.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/124a331f8fefe0be80ebf55d56a98d80_17.png

希望你享受规划潜在假期的过程。完成本课练习后,我们下节课将学习如何定义自己的函数。你已经看到,有些代码行我们需要反复编写(例如,打开文件、读取内容、关闭文件)。下节课你将看到,定义自己的函数如何让你能够更灵活地重复运行这些命令集,而无需反复编写它们,这比完整的循环更加灵活。期待在下节课与你相见。

026:将代码块转化为可重用函数 🧩

在本节课中,我们将要学习Python中一个非常重要的概念:函数。在前面的课程中,你可能已经注意到,我们经常需要重复执行某些操作,比如打开、读取和关闭文件,或者定义变量并生成提示词。虽然for循环可以帮助我们连续多次执行相同操作,但它要求操作必须一个接一个地连续进行。而函数则提供了更灵活的方式来创建可重用的代码块,让你可以在程序的任何地方随时调用它们。

什么是函数? 🤔

函数是一组可重复使用的命令,用于帮助你完成特定的任务。你已经使用过许多内置函数,例如:

  • print() 函数用于输出信息。

  • len() 函数用于返回对象的长度。

函数是现代编程语言的核心概念。在本节中,你将学习如何创建自己的函数,并了解它们如何帮助你避免重复编写代码。

为什么需要自定义函数? 💡

让我们通过一个例子来理解。之前,我们写过这样的代码块来打开、读取并打印文件内容:

f = open("Tokyo.txt")
journal = f.read()
f.close()
print(journal)

如果我想对另一个城市(如巴黎)的文件做同样的事情,就必须重复这些代码,并将文件名改为Paris.txt。为了避免这种重复,我们可以定义一个函数。

如何定义一个函数? 🛠️

我们可以定义一个名为 print_journal 的函数,如下所示:

def print_journal(file):
    f = open(file)
    journal = f.read()
    f.close()
    print(journal)

现在,你可以通过调用这个函数来加载和打印不同城市的文件:

print_journal("Sydney.txt")
print_journal("Paris.txt")

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_1.png

让我们详细解析这段代码:

  • def 是一个特殊的关键字,用于告诉Python你要定义一个新函数。

  • print_journal 是函数的名称。

  • 括号内的 file 是函数的参数。这意味着当你调用这个函数时,需要为它提供一个文件名。

  • 冒号 : 后面是一个缩进的代码块。每次调用 print_journal 函数时,都会执行这四行代码。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_3.png

函数的返回值 📤

上面的函数直接打印了内容。但有时,我们可能希望函数加载文件内容后,将其返回给我们,以便进行其他操作(比如计算长度),而不是直接打印。

我们可以定义另一个函数 read_journal

def read_journal(file):
    f = open(file)
    journal = f.read()
    f.close()
    return journal

这个函数与 print_journal 的主要区别在于:

  1. 它不再使用 print(journal)

  2. 它使用了 return journal 语句。return 命令的作用是让函数将 journal 变量的值“返回”给调用者。

现在,我们可以这样使用它:

journal_tokyo = read_journal("Tokyo.txt")
print(journal_tokyo)
print(len(journal_tokyo))

journal_tokyo 变量将保存函数返回的文章内容,然后我们可以打印它或计算其长度。

另一个例子:温度转换 🌡️

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_5.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_6.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_7.png

让我们看一个更通用的例子:将华氏度转换为摄氏度。没有函数时,每次转换都需要写一遍公式:

fahrenheit = 72
celsius = (fahrenheit - 32) * 5 / 9
print(celsius)

如果要转换多个温度,代码会变得重复。使用函数可以简化这个过程。

首先,定义一个打印结果的函数:

def fahrenheit_to_celsius(fahrenheit):
    celsius = (fahrenheit - 32) * 5 / 9
    print(celsius)

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_9.png>

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_10.png>

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_11.png>

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_12.png>

fahrenheit_to_celsius(72)
fahrenheit_to_celsius(68)

其次,定义一个返回结果的函数,以便将转换后的值保存下来进行后续操作:

def fahrenheit_to_celsius(fahrenheit):
    celsius = (fahrenheit - 32) * 5 / 9
    return celsius

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_14.png>

temp_f = 45
temp_c = fahrenheit_to_celsius(temp_f)
print(f"温度是 {temp_c} 摄氏度")
print(type(temp_c))

动手练习 ✍️

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_16.png

现在,你已经了解了函数的基本用法。可以尝试修改上面的温度转换代码:

  • 创建一个将摄氏度转换为华氏度的函数。

  • 创建一个将英尺转换为米的函数。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_18.png

总结 📝

本节课中我们一起学习了Python函数的核心概念:

  • 函数 是通过 def 关键字定义的可重用代码块。

  • 参数 是传递给函数的数据,在函数名后的括号内指定。

  • 返回值 使用 return 语句将函数内部计算的结果传递出去,这样调用者就可以使用这个值。

  • 使用函数可以避免代码重复,让程序更简洁、更易维护。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/f41419f36defbe1559688350c0d3f313_20.png

函数是编程的基石,掌握它将极大地提升你编写高效、清晰代码的能力。在下一节课中,我们将综合运用目前所学的所有知识,来规划一次完美的环球旅行。

027:为多个城市创建详细行程 🗺️

在本节课中,我们将综合运用之前学到的所有知识,利用Python和AI来规划一次环游世界的假期行程。我们将学习如何遍历多个文件,为每个城市提取关键信息,并利用大型语言模型生成详细的每日活动安排。

概述

上一节我们学习了如何读写文件以及调用AI模型。本节中,我们将把这些技能结合起来,构建一个更复杂的工作流:为一个包含多个城市的旅行计划,自动生成每个城市的详细行程,包括推荐的餐厅和特色菜肴。

读取行程数据

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_1.png

首先,我们需要导入必要的辅助函数,并定义一个专门用于读取CSV文件的函数。

def read_csv_file(filename):
    file = open(filename, 'r')
    data = file.read()
    file.close()
    return data

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_3.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_4.png

运行此函数后,我们可以读取存储行程的CSV文件。

itinerary = read_csv_file('itinerary.csv')
print(itinerary)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_6.png

行程数据包含了我们计划访问的各个城市、国家、抵达和离开日期。

为单个城市生成行程

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_8.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_9.png

我们以悉尼为例,演示如何为一个城市生成详细行程。首先,我们需要加载悉尼的餐厅数据,这些数据已保存在一个CSV文件中。

sydney_restaurants = read_csv_file('Sydney.csv')

接下来,我们从总行程中提取悉尼的具体信息,并构建一个提示词(prompt)来调用大型语言模型。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_11.png

city = itinerary[6]['city']
country = itinerary[6]['country']
arrival = itinerary[6]['arrival']
departure = itinerary[6]['departure']
restaurants = sydney_restaurants

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_13.png>

prompt = f"""
请为{city}, {country}的旅行创建一份详细行程。
访问时间:从{arrival}{departure}。
请规划每日活动,并指定早餐、午餐和晚餐的时间。
请考虑访问以下餐厅,并尝试其特色菜:
{restaurants}
"""
response = get_completion(prompt)
print(response)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_15.png

运行以上代码,AI模型将生成一份包含具体时间安排和餐厅推荐的悉尼详细行程。

为所有城市生成行程

现在,我们来看看如何将此过程自动化,为行程中的每一个城市生成详细安排。

以下是实现这一目标的核心步骤:

  1. 创建一个空字典来存储所有城市的详细行程。

  2. 遍历行程列表中的每一个目的地。

  3. 为每个城市加载对应的餐厅CSV文件。

  4. 为每个城市构建提示词并调用AI模型。

  5. 将生成的行程保存到字典中。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_17.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_18.png

detailed_itineraries = {}

for stop in itinerary:
    city = stop['city']
    country = stop['country']
    arrival = stop['arrival']
    departure = stop['departure']
    
    # 加载该城市的餐厅文件
    restaurant_file = f"{city}.csv"
    restaurants = read_csv_file(restaurant_file)
    
    print(f"正在为{city}创建详细行程...")
    
    # 构建提示词
    prompt = f"""
    请为{city}, {country}的旅行创建一份详细行程。
    访问时间:从{arrival}{departure}。
    请规划每日活动,并指定早餐、午餐和晚餐的时间。
    请考虑访问以下餐厅,并尝试其特色菜:
    {restaurants}
    """
    
    # 获取AI响应并存储
    response = get_completion(prompt)
    detailed_itineraries[city] = response

运行此循环后,detailed_itineraries 字典将包含所有城市的完整行程。例如,要查看东京的行程,可以执行:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_20.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_21.png

print(detailed_itineraries['Tokyo'])

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/50ba23651961fb2281c83afab37bdd15_22.png

总结

本节课中我们一起学习了如何将文件操作、数据提取和AI模型调用整合到一个自动化工作流中。我们实现了:

  • 读取包含多个城市信息的CSV行程文件。

  • 为每个城市加载独立的餐厅数据文件。

  • 利用大型语言模型为每个城市生成包含具体时间点和餐厅推荐的个性化详细行程。

  • 将所有结果组织并存储在一个数据结构中,便于查阅。

通过这个项目,你可以看到,即使是初学者,也能利用现有的AI工具和Python基础,构建出功能强大的实用程序。我鼓励你运行并修改这段代码,例如调整提示词,告诉AI你是一个“早起者”或“晚起者”,以生成更符合你作息的行程。请务必查看不同城市的行程建议。

记住,如果对代码有任何疑问,你可以随时向AI助手提问。

恭喜你完成本课程!你已经学会了如何在Python中处理文本和CSV文件,以及如何利用大型语言模型高效地完成许多任务。几年前,要实现本课程所展示的内容可能非常困难,甚至对于经验丰富的程序员来说也是如此。但得益于AI语言模型的普及,现在的初学者程序员能够构建出几年前世界上最优秀的程序员都可能难以完成的应用程序。

这正是一个学习编程和使用AI的激动人心的时代。可能实现的事情范围正在迅速扩大,有许多事情是初学者程序员可以做到,而世界上还没有人尝试过的。因此,你有大量的机会编写代码来帮助自己、你的朋友以及工作和家庭。

在看过编写代码所能实现的一些功能之后,我希望你能继续探索如何将其应用于你自己的数据和兴趣领域。在本系列简短课程的第四门也是最后一门课程中,你将学习如何访问这些预先编写好的Python程序(称为包或库)。这将让你能够使用大量非常强大的函数,并且通常只需几行代码就能完成真正强大的事情。最后一门课程中的示例将会是最有趣的,我期待在那里见到你。😊

028:引言 🚀

在本节课中,我们将学习如何利用他人编写并分享在互联网上的代码来扩展Python的功能。这是本系列的最后一门课程,它将显著提升你的编程能力。

概述

Python之所以如此流行,一个重要原因是全球的开发者们编写了大量优秀的代码,并免费在线分享。这使你能够在他人的工作基础上进行构建,从而大大加快自己编写代码的速度。Python提供了相应的工具,让你可以下载和安装他人编写的代码。这些第三方代码通常被打包成所谓的“包”。你将学习如何安装Python包,它们能立即为你提供额外的强大函数以供调用。

例如,如果你想让你的代码下载一个网页、提取文本并可能进行总结,你很可能找到一个免费的包来实现下载和提取文本的功能。在本课程中,你将看到许多这样的例子,我们会介绍各种类型的包能为你做什么。

包与API

到目前为止,我们主要讨论了那些让你在本地计算机上安装并运行代码的包。但还有一种重要的包更进一步,它们提供了应用程序编程接口,即API。API允许你的代码调用运行在互联网上他人计算机中的代码。

例如,有些API允许你的计算机联网,向某个气象服务商的计算机请求返回指定地点当前时刻的天气。此外,还有API可以让你的代码获取最新新闻、股票价格,甚至进行网络搜索。

除了使用API收集信息,代码还可以利用API在现实世界中采取行动。例如,你的代码可以通过API发送短信或电子邮件,使其到达他人的手机;甚至可以通过API下达在线购物订单,导致实物产品被配送到某人的家中。

协作的力量

在编程中,相互借鉴和构建一直是实现巨大成就的关键。正是通过“站在巨人的肩膀上”——使用他人的代码等资源——我们所有人才能更快、更有效地编写代码。

如今,随着AI聊天机器人的普及,你还可以就哪些流行的包或API适合你的项目获得建议,并让聊天机器人帮助你编写使用这些包或API的代码。

在本课程网站上,我们将为你提供许多工具、包和API,并展示如何在你自己的计算机上安装额外的包。

引入import命令

接下来,让我们开始学习。首先,看看你已经在前面的课程中见过的import命令实际上在做什么,以及它如何让你加载他人的代码。

在下一节视频中,我们将深入探讨这一点。

029:使用本地文件中的函数 📂

在本节课中,我们将要学习如何从本地文件中导入函数。这是组织代码、复用功能以及使用他人编写代码的关键技能。

概述

在前面的课程中,你已经学会了如何使用 def 命令来定义函数。然而,获取函数的另一种重要方式是通过 import 命令。本节课将深入探讨 import 命令的工作原理,并展示如何从本地 .py 文件中加载和使用函数。

导入函数的基本原理

在Python中,函数允许你将一段执行特定操作并可能返回值的代码打包在一起。例如,我们之前定义的华氏度转摄氏度函数:

def fahrenheit_to_celsius(temp_f):
    temp_c = (temp_f - 32) * 5 / 9
    print(f"{temp_f} degrees Fahrenheit is {temp_c} degrees Celsius.")

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_1.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_2.png

除了自己定义,我们还可以通过 import 命令从其他地方获取函数。例如,在课程中你经常看到这样的代码:

from helper_functions import print_llm_response

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_4.png

当Python执行这行代码时,它会在你的计算机上寻找一个名为 helper_functions.py 的文件,并从中加载 print_llm_response 函数。

查看本地文件

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_6.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_8.png

让我们看看 helper_functions.py 文件里可能有什么。这个文件包含了许多预先定义好的函数,例如:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_10.png

def celsius_to_fahrenheit(temp_c):
    temp_f = temp_c * 9 / 5 + 32
    print(f"{temp_c} degrees Celsius is {temp_f} degrees Fahrenheit.")

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_12.png

这个文件定义了 celsius_to_fahrenheit 函数。那么,如何将这个函数导入到你的代码中使用呢?

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_14.png

导入函数的几种方法

以下是导入函数的几种常见方式:

1. 导入特定函数

这是最精确的方式,只导入你需要的函数。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_16.png

from helper_functions import celsius_to_fahrenheit
# 现在可以直接使用该函数
celsius_to_fahrenheit(20)

2. 导入整个模块

这种方式会导入文件中的所有函数,但在使用时需要加上模块名前缀。

import helper_functions
# 使用函数时需要指定模块名
helper_functions.celsius_to_fahrenheit(20)

3. 导入所有函数(不推荐)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_18.png

使用 * 可以导入模块中的所有函数,使其可以直接使用,无需前缀。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_20.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_21.png

from helper_functions import *
# 可以直接使用所有函数
celsius_to_fahrenheit(20)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_22.png

注意:通常不推荐使用 import *,因为它会导入所有内容,可能导致命名冲突或意外覆盖现有函数。最佳实践是只导入你明确需要的函数。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_24.png

实践示例

假设 helper_functions.py 中还有一个 get_llm_response 函数。

  • 如果你使用 import helper_functions,调用方式为:

    response = helper_functions.get_llm_response("What is the capital of France?")
    
  • 如果你使用 from helper_functions import get_llm_response,调用方式则更简洁:

    response = get_llm_response("What is the capital of France?")
    

选择哪种方式取决于你的具体需求和代码的清晰度。

总结

本节课中,我们一起学习了如何从本地 .py 文件中导入函数:

  1. 使用 from file_name import function_name 来导入特定函数。

  2. 使用 import file_name 来导入整个模块,并通过 file_name.function_name() 调用。

  3. 了解了为何应谨慎使用 from file_name import *

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/522fc5c9319d6b283352814a6a16fe6c_26.png

掌握导入功能是构建模块化、可维护Python程序的基础。下一节课,我们将探索如何导入Python内置或第三方包中的函数,这将极大地扩展你代码的能力。

030:内置包 📦

在本节课中,我们将学习如何使用 Python 内置的包。Python 自带了许多功能强大的工具和函数,例如处理数学运算、统计计算以及生成随机数等。我们将了解如何导入并使用这些内置工具,为后续学习第三方包打下基础。

什么是内置包?📚

Python 本身提供了许多不同的工具和函数。例如,你已经见过一些用于读取 CSV 文件的函数。Python 还包含许多数学工具。此外,Python 也有用于执行统计或绘制简单图形等功能的函数。

这些内置包由支持 Python 编程语言的团队维护。在大多数你编写的程序中,你不需要一次性使用所有这些包。因此,你可以根据特定代码片段的需求,选择导入哪些工具。

上一节我们介绍了 Python 的基本功能,本节中我们来看看如何具体使用其内置的包。

使用数学包 🔢

Python 内置了许多包,你可以直接使用。你可以将 Python 中的每个包想象成一本书,Python 自带了许多关于不同主题的“书”。就像在图书馆做研究时,你不需要为每一项研究使用每一本书一样,编写特定代码时,你可能只需要使用可用包中的一个子集。

让我们从一个使用 Python 进行数学运算的例子开始。

以下是导入和使用 math 包的步骤:

  1. math 包中导入所需的函数和常量。

  2. 使用这些函数进行计算。

from math import cos, sin, pi

print(pi)

运行这行代码会导入余弦、正弦函数以及常数 pi。打印 pi,你会发现它是一个浮点数,是圆周率相当精确的近似值。

angles = [0, pi/2, pi, 3*pi/2]
cosine_values = [cos(angle) for angle in angles]
print(cosine_values)

现在,你可以使用我们刚刚导入的 cos 函数来计算不同角度的余弦值。同样,你也可以使用导入的 sin 函数来打印这些角度的正弦值。

math 包还包含其他函数,例如向下取整函数 floor

from math import floor
print(floor(5.7))

使用统计包 📊

除了数学包,Python 还有一个内置的统计包。

以下是导入和使用 statistics 包的步骤:

  1. statistics 包中导入所需的函数。

  2. 将函数应用于你的数据列表。

from statistics import mean, stdev

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7aaabb4b822b0151b08e462ee65c3555_1.png>

heights = [175, 168, 182, 165, 190]
print(mean(heights))
print(stdev(heights))

Python 的统计包还有其他一些函数,用于计算数据的中位数、分位数等,如果你需要对数据进行简单的统计分析,这些函数可能会很有用。

引入随机性 🎲

最后,这里有一个有趣的功能:Python 还有一个用于在代码中引入随机性的包。

以下是使用 random 包中的 sample 函数的步骤:

  1. random 包中导入 sample 函数。

  2. 使用该函数从列表中随机抽取样本。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7aaabb4b822b0151b08e462ee65c3555_3.png

from random import sample

spices = ['paprika', 'oregano', 'cumin', 'cinnamon']
vegetables = ['broccoli', 'carrot', 'spinach', 'potato']
proteins = ['chicken', 'beef', 'tofu', 'fish']

random_spices = sample(spices, 2)
random_vegetables = sample(vegetables, 2)
random_protein = sample(proteins, 1)

print(random_spices)
print(random_vegetables)
print(random_protein)

random 包中导入 sample 函数,可以让你编写每次运行时都能生成不同随机结果的代码。这是一种很好的方式,可以为你的代码注入随机性,从而每次都能产生新的结果。

综合应用示例 🍳

我们可以利用随机生成的食材,让大语言模型为我们创建食谱。

# 假设已从工具函数中导入了 get_llm_response
from my_functions import get_llm_response

ingredients = f"Spices: {random_spices}. Vegetables: {random_vegetables}. Protein: {random_protein}."
prompt = f"Suggest a recipe using these ingredients: {ingredients}"
recipe = get_llm_response(prompt)
print(recipe)

这样,我们就利用随机选择的食材,让大语言模型生成一个使用这些香料、蔬菜和蛋白质的食谱建议。每次运行,由于食材是随机选择的,你可能会得到完全不同的食谱。

总结 📝

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7aaabb4b822b0151b08e462ee65c3555_5.png

本节课中我们一起学习了如何使用 Python 的内置包。我们了解了如何导入和使用 math 包进行数学计算,使用 statistics 包进行基本的统计分析,以及使用 random 包为程序引入随机性。这些内置工具是 Python 强大功能的基础组成部分。在下一课中,我们将超越 Python 的内置包,学习如何下载和安装来自互联网的第三方包,这将极大地扩展 Python 为你所能做的事情。

031:使用第三方包 📦

在本节课中,我们将学习如何使用由他人编写并分享的Python代码包,这些被称为“第三方包”。我们将重点介绍两个在数据处理和图表绘制中极为流行的包:pandasmatplotlib。通过它们,你可以更高效地处理数据和创建可视化图表。


第三方包的魅力 ✨

许多人编写了Python代码并在网上免费分享,供任何人使用。也许有一天你也会这样做。编写代码、在线分享并看到他人使用你的成果,这会是一件非常酷且令人满足的事情。

得益于许多人的分享,你可以通过下载和安装他们的包来利用他们的工作成果。我将其称为“第三方包”,因为它们是由你或Python官方维护者之外的其他人编写的。如今,至少有数十万个这样的第三方包存在。

上一节我们介绍了导入代码的基本概念,本节中我们来看看如何利用社区中现成的强大工具。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_1.png


数据处理利器:Pandas 🐼

最流行的Python第三方包之一是pandas,它常用于处理结构化数据,例如存储在电子表格和CSV文件中的数据。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_3.png

注意:这里的“pandas”与可爱的动物无关。它来源于经济学术语“面板数据”的缩写。如果你想知道更多,可以询问AI聊天机器人或搜索。当然,如果你想象一群可爱的熊猫在做数据科学能带来快乐,也完全可以保留这个画面。

最常见的导入方式是使用以下命令:

import pandas as pd

这里的as pd是新的用法。它让我们在后续代码中可以用pd.函数名来代替pandas.函数名,从而节省打字时间。许多AI聊天机器人生成的代码也倾向于使用这种简写。

在本例中,我们将使用一个关于二手车售价的数据集(数据由Nehal Burer等人整理)。以下是使用pandas读取和查看数据的基本操作:

import pandas as pd

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_5.png>

# 读取CSV文件中的数据
data = pd.read_csv(‘used_car_data.csv‘)
# 打印出数据
print(data)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_7.png

pandas功能强大,可以进行数据筛选。例如,以下是获取售价高于10000美元的车辆的方法:

# 筛选出售价大于等于10000的数据
expensive_cars = data[data[‘price‘] >= 10000]
print(expensive_cars)

你还可以进行更复杂的查询,例如找出所有2015年款的车辆并计算其中位价格:

# 筛选出2015年款的车辆
cars_2015 = data[data[‘year‘] == 2015]
print(cars_2015)

# 计算2015年款车辆价格的中位数
median_price_2015 = cars_2015[‘price‘].median()
print(f“2015年款车辆价格中位数: ${median_price_2015})

pandas的命令非常多,难以全部记住。但好消息是,AI聊天机器人非常了解pandas。当你需要实现特定功能时,可以向它描述你的数据和目标,它通常能提供正确的代码片段。


数据可视化:Matplotlib 📊

除了处理数据,另一个非常流行的包是用于绘制图表的matplotlib。导入其绘图功能的常见代码如下:

import matplotlib.pyplot as plt

这个包名中间有一个点,但就使用而言,你无需担心其具体含义。导入后,我们可以创建散点图来可视化价格与里程数的关系:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_9.png

import matplotlib.pyplot as plt

<https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_11.png>

# 创建散点图:x轴为里程,y轴为价格
plt.scatter(data[‘mileage‘], data[‘price‘])
plt.xlabel(‘Mileage (km))  # 为x轴添加标签
plt.ylabel(‘Price (USD))   # 为y轴添加标签
plt.title(‘Car Price vs. Mileage‘)  # 添加图表标题
plt.grid(True)  # 显示网格
plt.show()      # 显示图表

有时你可能想修改图表样式,例如将散点颜色改为红色并增大标题字体。同样,你可以求助AI聊天机器人。例如,你可以提出请求:“请为以下绘图命令添加网格,将散点图颜色改为红色,并增大标题字体大小。”AI通常会给出可行的代码,你可以检查并运行它。

# 假设这是AI生成的优化代码示例
plt.scatter(data[‘mileage‘], data[‘price‘], color=‘red‘)
plt.xlabel(‘Mileage (km))
plt.ylabel(‘Price (USD))
plt.title(‘Car Price vs. Mileage‘, fontsize=16)  # 增大了字体大小
plt.grid(True)
plt.show()

AI生成的代码并非总是完美,但通常效果不错。许多开发者会快速浏览AI给出的代码,确保它看起来合理,然后运行测试。如果第一次不成功,你可以向AI反馈问题,它往往能在第二次尝试时给出更好的答案。


总结 🎯

本节课中,我们一起学习了两个重要的第三方Python包:pandasmatplotlib。你看到了在使用前需要先通过import语句导入它们,这与导入内置包(如math)或本地文件中的函数类似。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/7ac5ad0b05c23bf3f22e7afe84a03198_13.png

目前,我们在Jupyter Notebook环境中使用的pandasmatplotlib是预先安装好的。然而,还有成千上万的其他第三方包并未预装在您的电脑或环境中。那么,如何从互联网上下载并安装一个全新的Python包呢?让我们在下一课中探索这个问题。

032:安装Python包

在本节课中,我们将学习如何在Python环境中安装外部包。到目前为止,本网站上的所有Jupyter笔记本都已预装了运行所需的所有包。但如果你在自己的计算机或其他环境中使用Jupyter笔记本,可能需要自行安装一些包。本节将演示下载和安装包的过程,特别是用于解析HTML网页的包,以及DeepLearning.AI提供的辅助工具包。

安装Beautiful Soup包

有多种方式可以安装Python包。这里我们将介绍如何在Jupyter笔记本中直接安装。本节中,我们需要使用一个名为Beautiful Soup(简称bs4)的包来解析HTML网页。

以下是安装bs4包的方法:在代码单元格中输入 !pip install bs4 并运行。感叹号 ! 允许我们在笔记本中执行系统命令。pip 是Python的包管理工具。

!pip install bs4

运行此命令后,计算机会在线查找bs4包,然后下载并安装它。安装成功后,你将看到类似“Successfully installed bs4-0.0.2”的提示。

:bs4代表Beautiful Soup版本4。其名称来源于《爱丽丝梦游仙境》中的一首诗。这是一个用于解析HTML网页的Python包。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_1.png

bs4是一个相对较小的包,安装只需几秒钟。有些包可能需要几分钟才能安装完成。

导入并使用已安装的包

安装包后,你就可以导入该包或其包含的函数了。

接下来,我们从刚安装的bs4包中导入BeautifulSoup函数。同时,为了完成今天的示例,我们还需要导入其他几个模块:requests用于下载网页,以及一些辅助函数和用于显示HTML的IPython组件。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_3.png

from bs4 import BeautifulSoup
import requests
from IPython.display import display, HTML

从网页抓取并解析文本

上一节我们介绍了如何安装和导入包,本节中我们来看看如何使用bs4从网页中提取纯文本。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_5.png

首先,你需要获取网页内容。这里有一个URL,指向一份通讯文章。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_6.png

url = "https://example.com/the-batch-letter"  # 示例URL
response = requests.get(url)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_8.png

requests.get(url) 会向该URL发送请求并获取响应。然后,我们可以使用BeautifulSoup来解析响应的HTML内容,并提取其中的段落文本。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_9.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_10.png

以下是提取网页中所有段落文本并将其合并的代码:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_12.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_13.png

# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.content, 'html.parser')
# 找到所有的段落(<p>标签)
paragraphs = soup.find_all('p')
# 将所有段落的文本合并成一个字符串
combined_text = ' '.join([para.get_text() for para in paragraphs])
print(combined_text)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_15.png

运行这段代码后,你将得到网页中主要文章的纯文本内容。这个文本字符串可以直接作为提示词输入给大型语言模型进行处理,例如让它生成摘要或要点。

关键点:你不必完全理解上述代码的每个细节。如果你需要编写类似功能的代码,可以直接向AI助手求助。本节的核心是掌握安装包(!pip install <package_name>)和导入使用的基本流程。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_17.png

安装AI辅助工具包

让我们再看一个安装包的例子。DeepLearning.AI团队提供了一个名为ai_setup的包,它包含了本课程及之前课程中使用过的关键辅助函数。

安装ai_setup包的方法与之前相同:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_19.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_20.png

!pip install ai_setup

安装完成后,你就可以导入并使用其中的函数了,例如之前用过的get_completion函数。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_22.png

from ai_setup import get_completion

prompt = "为什么编程语言叫Python?"
response = get_completion(prompt)
print(response)

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/c16acff38a28f3e66666813711a7832b_24.png

运行上述代码,你会得到一个有趣的答案(它实际上灵感来源于一部名为《蒙提·派森的飞行马戏团》的喜剧节目)。

注意:在本网站上,ai_setup可以直接使用。若要在你自己的计算机上使用ai_setup,后续课程还会介绍一个额外的配置步骤。

get_completion函数通过API(应用程序编程接口)访问互联网上的大型语言模型服务(例如OpenAI)来获取答案。API是一种非常强大的工具,它允许你的代码在获得许可的情况下访问他人的计算机或服务来获取功能。

总结

本节课中我们一起学习了如何在Python环境中安装外部包。我们通过安装bs4包来解析HTML网页,并安装了ai_setup包来使用预定义的AI辅助函数。核心操作是使用 !pip install <package_name> 命令进行安装,然后通过 import 语句将包引入代码中。掌握包的安装和管理是扩展Python功能、利用丰富生态系统的关键一步。

在下一节视频中,我们将深入探讨什么是API以及如何在自己的代码中使用它们,这将帮助你快速构建更强大的程序。

033:从网络获取数据的API 🌐

在本节课中,我们将学习如何使用API从互联网上获取实时数据。我们将通过一个获取天气数据来规划当日着装的趣味示例,来理解API的工作原理。

有时,你想编写代码解决的问题可能涉及实时数据。例如,使用天气数据来规划当天的着装,也许在你度假时。

为了访问诸如当前天气、股票价格、新闻,或者调用网络搜索引擎来查找相关网页等数据,你需要使用一种叫做API(应用程序编程接口)的东西。API为你的计算机提供了一种与另一台计算机对话的方式,让那台计算机为你做一些事情,例如获取一个城市的当前天气并返回给你的计算机。

互联网上有许多API,有些是免费的,许多可能需要付费,因为运行计算机和操作该API服务通常需要成本。但与下载一个软件包在你的计算机上运行不同,API允许你在获得许可的情况下,让别人的计算机为你工作,为你做一些事情。

让我们通过一个使用API获取实时天气数据来规划当日着装的趣味示例,来看看API是如何工作的。

API的工作原理 🤖

API是一种让你的计算机能够请求另一台计算机获取数据或为你工作的方式。可以将其类比为:你坐在餐厅里,想要一些食物。你会与一位友好的服务员交谈,然后服务员会去厨房获取并递送你点的餐。服务员是你和厨房之间的中介,而API的作用就是作为你和提供数据或服务的其他计算机之间的中介。

获取天气数据示例 🌤️

让我们通过一个例子来具体操作。我将导入必要的包,并使用一个名为OpenWeatherMap的网站提供的API。我现在位于美国加利福尼亚州的帕洛阿尔托,此刻这里的天气是24摄氏度,相当不错。但与其使用网页界面查询天气,我将展示如何使用API让我的计算机自动从另一台计算机获取天气。

大多数API会要求一个叫做“密钥”或“API密钥”的东西。你可以将API密钥视为一个专属于你的密码。这样,处理你请求的计算机就知道请求来自谁。

以下是一段简单的代码,用于加载专属于我的API密钥。现在不必过于担心这段代码在做什么,稍后我会再详细说明。

import os
import requests
from ai_se_functions import print_el_responses
import do_n  # 稍后会详细说明这个包

获取API密钥后,我将指定我所在位置的纬度和经度。然后,这里有一些代码来构建API的URL并获取数据。

# 假设API密钥已安全加载到变量 `api_key` 中
latitude = 37.4419  # 帕洛阿尔托的纬度
longitude = -122.1430  # 帕洛阿尔托的经度

url = f"https://api.openweathermap.org/data/2.5/weather?lat={latitude}&lon={longitude}&appid={api_key}&units=metric"
response = requests.get(url)
data = response.json()

这段代码会向API URL发送请求,并将返回的JSON数据解析为Python字典。返回的数据是一个包含许多值的复杂字典,例如温度是24.02度,体感温度是23.98度,描述是“天空晴朗”,还有风速等信息。

提取关键信息 🔑

为了提取我可能想要的关键信息,比如温度、描述和风速,我可以直接请我的AI聊天机器人帮我编写代码。我会问它:“如何从这个data变量中获取温度、描述和风速?”

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/593575c4a40d5c16f2d492ee6807f522_1.png

然后,我可以复制聊天机器人给出的代码并运行它。例如,它可能会提供类似以下的代码:

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/593575c4a40d5c16f2d492ee6807f522_3.png

temperature = data['main']['temp']
description = data['weather'][0]['description']
wind_speed = data['wind']['speed']

运行这段代码后,它会将温度提取到temperature变量中,描述提取到description变量中,风速提取到wind_speed变量中。如果你想生成一个漂亮的天气报告,我们可以提取这些数据并像这样打印出来:

print(f"当前温度: {temperature}°C")
print(f"天气状况: {description}")
print(f"风速: {wind_speed} m/s")

当你运行这段代码时,可以自由查找你自己城市的纬度和经度并填入,以查询你自己城市的当前天气。

基于天气建议着装 👕

还有一个有趣的应用。我们可以说:“根据以下天气情况,建议合适的户外着装。”同样,如果你有特定的着装偏好,可以添加到提示词中,但为了保持通用性,可能会建议“轻便的T恤和短裤,太阳镜或防晒霜”。防晒霜实际上是个好主意。

这就是你如何通过互联网调用API,从其他计算机(如OpenWeatherMap的网络服务器)获取信息的方法。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/593575c4a40d5c16f2d492ee6807f522_5.png

关于API的更多说明 📚

对于不同类型的数据服务,会有不同的API。你可能需要在线查找文档,或者向AI聊天机器人寻求帮助,以弄清楚如何调用不同的API。AI聊天机器人更可能知道如何调用互联网上更流行的API。对于不太流行的API,你可能需要自己查看文档。

最后一点,对于许多API,你需要提供一个API密钥的值,这是一个由数字和字母组成的秘密字符串,它让网站知道是你在发出这个API请求调用。

我们已经设置好了这个Jupyter笔记本环境来使用这个API。但如果你真的想在你自己的计算机上这样做,你需要去相关网站注册账户并获取一个秘密的API密钥,然后将API_KEY变量设置为等于那个秘密字符串。

一种方法是写一行代码,如API_KEY = ‘你的密钥’,然后用实际的API密钥运行这行代码,再调用API,这样会奏效。但事实证明,尽管这可行,大多数程序员不会这样写代码,因为如果你把你的API密钥直接放在代码里,那么如果代码泄露给别人,其他人就会拥有你的秘密API密钥的访问权限。

因此,大多数程序员会使用do_n包。do_n函数经过几个额外的步骤来安全地加载和使用API密钥。如果你想了解这两行代码的作用,如果你感兴趣,可以询问AI聊天机器人如何更安全地存储API密钥。

总结 📝

本节课中,我们一起学习了如何获取实时数据(即天气数据)。实际上,还有许多API可以让你访问先进的人工智能模型。事实上,print_el_responses函数就是使用互联网上的一个API来访问OpenAI的ChatGPT大语言模型。在下一课中,我们将深入探讨print_el_responses函数实际的工作原理,以及你如何编写代码通过互联网访问先进的人工智能模型。

让我们在下一个视频中继续学习。

034:使用AI模型的API 🚀

在本节课中,我们将学习如何使用应用程序编程接口来访问在线AI模型,例如OpenAI的ChatGPT。你将了解get_el_response函数背后的工作原理,并学习如何配置AI模型的行为。

概述

上一节我们介绍了如何使用API获取实时天气数据。实际上,API的功能远不止获取数据,它还能帮助你访问各种在线AI工具,例如OpenAI的ChatGPT、Google的Gemini或Anthropic的Claude等。例如,你一直在使用的get_el_response函数,其背后调用的就是OpenAI的ChatGPT API。OpenAI的大型语言模型运行在互联网上的计算服务器中,你可以通过API向其提问并获得答案。本节中,我们将深入探究你在过去课程中一直使用的get_el_response函数的核心机制。

探索OpenAI API

以下是使用OpenAI API的基本方法。我已经安装了openai软件包。如果你的电脑上尚未安装,可能需要运行pip install openai命令。来自openai包的openai函数,正是驱动你一直在helper_functionsai_setup包中使用的get_el_response函数的核心。

让我们来看看get_el_response函数具体做了什么。我知道下面的代码看起来很多,你不需要理解每一行,但我希望快速浏览一遍,让你对现代前沿API的使用方式有一个直观感受。

以下是get_el_response函数的核心代码结构:

def get_el_response(prompt):
    client = openai.OpenAI(api_key=api_key)
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "You are a helpful AI assistant."},
            {"role": "user", "content": prompt}
        ],
        temperature=0
    )
    return response.choices[0].message.content
  • client.chat.completions.create是OpenAI提供的一个函数。

  • 代码中的这一行选择了我们想要使用的大型语言模型,这里我们使用的是gpt-4o-mini模型。

  • 当我们使用大型语言模型时,常做的一件事是告诉它如何回应,这被称为系统消息。我们告诉模型希望它扮演一个AI助手的角色。稍后我们将看到更改这个系统消息会发生什么。

  • 然后我们指定提示词,它可以是一个问题,例如“法国的首都是什么?”。

  • 大型语言模型有一个名为温度的参数,它控制着回应的随机性。在我的代码中,如果我不希望回应过于随机,通常将其设置为零,这是使用大型语言模型时可能的最低温度。

  • 最上面这行代码从大型语言模型获取结果,我们有时称之为补全

  • 然后你提取回应的文本内容。

  • 最后,返回回应的文本。

如果你不理解这段代码的每一行,请不要担心。我只是想让你了解一下,如果你要自己使用它,代码会是什么样子。你可以直接复制这段代码到自己的程序中运行。事实上,如果你访问OpenAI的网站,查看其API的在线文档,你很可能会找到看起来非常相似的代码示例。因此,你可以直接从OpenAI、Anthropic Claude、Google Gemini或其他你正在使用的服务的文档中获取代码示例,然后让它在你自己的代码中运行,而无需担心这里的每一行代码具体在做什么。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/a02c2af10154f0484c65e8cfa9b60f85_1.png

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/a02c2af10154f0484c65e8cfa9b60f85_3.png

如果你想了解每一行代码的作用,像往常一样,你也可以询问一个语言模型,让它为你逐行解释。

需要注意的是,语言模型是通过阅读互联网上的文本进行学习的,因此它们更擅长理解那些更知名、在互联网上存在时间更长的API。对于不太流行的、或由他人在互联网上刚刚创建和发布的API,它们的理解可能就没那么好了。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/a02c2af10154f0484c65e8cfa9b60f85_5.png

配置与使用API

要使用OpenAI API,你需要从OpenAI网站获取一个秘密的API密钥。我将使用load_dotenv方法来安全地获取这个API密钥。以下这行代码你也可以从OpenAI文档中找到,用于初始化OpenAI服务或客户端。

运行初始化后,get_el_response函数就定义好了。现在,如果我发送提示词“法国的首都是什么?”,它就会生成回应。因为我在这里使用了我的API密钥,所以会向我的账户收取一小部分费用。

为了展示一些有趣的效果,如果你将系统消息改为“你是一个讽刺的AI助手”,让我重新定义它。现在运行,看看它会说什么。哦,这确实相当讽刺。是的,它回答了“巴黎”,但带着很多态度。这就是系统消息的作用,它告诉大型语言模型你希望它如何表现。

也许再展示一个有趣的现象,如果我将温度参数设置为一个更高的值,比如1.0(这是一个相当高的温度),这会使回应更加随机。每次我运行它,在这种情况下,都会得到一个不同的讽刺性回应。这个温度参数可以在0到2之间变化,它控制着你希望回应具有的随机程度。许多人使用大约0.7的值,这似乎是一个常见的选择,它会给你带来一点随机性,也许是一点创造性的表象,但又不会过于随机。

我鼓励你尝试这个参数,试试不同的温度值并多次运行,或者尝试不同的系统消息。也许尝试创建一个总是返回押韵诗句的AI系统,或者一个只说某种特定语言(如西班牙语或日语)的AI系统,看看你会得到什么结果。

在本地运行

最后,如果你想在自己的电脑上本地运行所有这些代码,我想分享一些关于如何将API密钥放入代码中的细节。

在通过pip install ai_setup安装ai_setup包之后,你可以从ai_setup导入一个名为authenticate的函数来打印get_el_response的回应。authenticate函数需要传入一个你可以从OpenAI网站获取的API密钥。这是一项付费服务,因此可能会要求你提供信用卡信息。其他大型语言模型提供商通常也会要求提供信用卡信息以获取访问其服务的API密钥。这样做之后,你的程序将使用你安全的API密钥向OpenAI的API服务进行身份验证,然后你就可以用它来生成大型语言模型的回应。

将API密钥直接存储在代码中并不是最安全的方式。一个更好、更推荐的方式如下:

import os
from dotenv import load_dotenv
from ai_setup import authenticate

load_dotenv() # 从 .env 文件加载环境变量
api_key = os.getenv("OPENAI_API_KEY") # 安全地获取密钥
authenticate(api_key)

这三行新代码会将API密钥存储在一个名为.env的文件中。load_dotenv()会从该文件加载密钥,然后使用从.env文件中更安全加载的API密钥进行身份验证。你还需要导入osdotenv库来运行这段代码。我现在不想深入探讨这些细节,但你可以询问AI语言模型,它能引导你完成所有步骤。如果你尝试时遇到任何错误信息,可以将错误信息复制粘贴到AI聊天机器人中,让它帮助你调试。

如果你是在自己的电脑上设置Python,而不是在DeepLearning.AI网站上通过互联网运行,那么你将使用这段代码。在本视频之后,有一个可选的阅读材料,它会向你展示如何在本地计算机上安装Python和Jupyter笔记本的几种选项。在Mac和Windows机器上操作可能略有不同,材料中列出了一些免费选项。如果你想安装这些并在自己的电脑上运行,可以完全选择性地阅读这个材料并进行安装。我个人很喜欢在我的笔记本电脑上运行Jupyter笔记本和Python,我认为你可能也会喜欢,因为即使没有网络连接(比如在飞机上),也能在自己的电脑上运行程序,这真的很酷。

无论你是否阅读那个材料,我们都将以一个总结视频结束,讨论在完成本课程后你接下来可以去哪里。

总结

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/a02c2af10154f0484c65e8cfa9b60f85_7.png

本节课中,我们一起学习了如何使用API访问在线AI模型。我们剖析了get_el_response函数的核心代码,了解了如何通过系统消息指导AI的行为,以及如何使用温度参数控制回应的随机性。我们还介绍了在本地安全配置API密钥的方法。掌握这些知识,你就能开始探索和利用各种强大的AI模型来增强你的应用程序了。

035:课程总结与后续步骤 🎉

在本节课中,我们将回顾整个课程的学习成果,并为你的后续学习与实践提供具体的建议。

恭喜你完成了这门课程,也完成了“AI Python for Beginners”系列的学习。在这四门课程中,你学到了很多知识。从Python的基础知识开始,例如数据类型函数变量,以及for循环if语句等代码模式。你还学习了如何让Python读取计算机中的文件,从而能够处理你自己的文档和数据,或者使用AI来规划梦想假期。

在最后的这门课程中,你看到了如何通过使用其他程序员编写的来扩展Python的能力。这些包让你可以下载和处理网页、生成大量数据、获取天气数据,甚至通过互联网调用大型语言模型。

现在,你可能想知道接下来可以做什么。有很多事情可以做。以下是一些你可以考虑的具体后续步骤。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/4ecd37e517c2a32c8bd9d7660144f645_1.png

后续学习建议 📚

以下是你可以考虑的几个方向。

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/4ecd37e517c2a32c8bd9d7660144f645_3.png

  • 安装Jupyter:如果你还没有这样做,可以考虑在你自己的计算机上安装Jupyter。在自己的笔记本电脑上运行代码会很有趣。

  • 继续学习课程:我希望你能继续学习课程,不断进步。在DeepLearning.AI,你可以考虑几门短期课程,例如 “ChatGPT Prompt Engineering for Developers”,这门课程将教你如何以更复杂的方式提示ChatGPT;或者 “Prompt Engineering with Llama2 and 3”。如果你想学习更深入、更实质性的内容,也可以考虑参加我们的机器学习专项课程

开启你的项目之旅 🚀

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-ai-py-bgn/img/4ecd37e517c2a32c8bd9d7660144f645_5.png

在你继续学习课程的同时,如果你对某个项目有想法,请大胆尝试。请务必负责任地运用你的技能,即以帮助他人的方式使用它们。我见过初学者从事的项目可能涉及下载网页并处理该页面,也许是为了总结它,或者收集与你的业务相关的见解;或者通过使用网络搜索引擎的API进行网络搜索;或者从PDF中提取文本并处理该文本,以及其他许多有趣的例子。

如果你还不知道如何做某件事,我鼓励你向AI聊天机器人寻求帮助,不一定是本网站上的那个,而是打开你的ChatGPT、Anthropic Claude、Google的Gemini或其他AI,向它们寻求帮助。也许还可以快速进行网络搜索,看看是否有任何相关的Python包或API可以使用。

许多人从做小项目开始,然后随着时间的推移逐渐发展到越来越大的项目。所以,不要觉得你的第一个项目必须是改变世界的庞然大物。如果你能做一些小而有趣的项目,那就很棒了。无论你的项目是否成功,你都可以吸取这些经验,并希望进行第二个稍大一点的项目,通过这个过程学习更多,依此类推。

总结与鼓励 ✨

时至今日,我仍然经常尝试编写代码,有时我做的事情就是行不通。这种情况会发生在每个人身上,这就是练习的过程。通过完成这门课程,你正在磨练你的技能。你是一名Python程序员。你才刚刚起步,但你现在已经是全球AI编码社区的一员了。我非常高兴你能加入我们,并且我乐观地认为,你会找到运用这些技能来改善你的日常生活和工作的方法。虽然我们共同的旅程暂时告一段落,这让我有点难过,但我也非常感谢你投入了所有的时间和精力来学习这些Python课程。

我希望很快能再次见到你,希望你能继续学习和实践,并用你的新技能做出美好的事情,帮助自己和他人。


本节课中我们一起回顾了整个课程的学习历程,从Python基础到扩展应用,并为你规划了安装工具、深入学习课程以及开启个人项目的后续路径。记住,编程是一个不断实践和探索的过程,勇敢地开始你的第一个项目吧。

更多推荐