首页 后端开发 Python教程 通过 Python 使用生成式 AI

通过 Python 使用生成式 AI

Nov 11, 2024 am 08:28 AM

人工智能是未来,作为软件工程师,这是最热门的领域。在代码中利用 LLM 使您能够构建更智能的应用程序来处理复杂的任务,例如实时情绪分析或解释用户生成的内容。集成法学硕士可以让您的软件响应更快、功能更强大,增强用户体验和自动化。

这篇文章介绍了如何使用 Python LLM 调用,以便您可以开始将这些强大的功能添加到您自己的代码中。

我们将从为您选择的任何角色制作一个聊天机器人开始。然后,您将学习如何总结较小的文本,甚至进一步总结整本书。最后,您将学习如何重新提示并分析法学硕士提供的结果。

提出我们的第一个 LLM 请求

对于 LLM 请求,我们将使用 Groq。如果您在那里创建帐户,您可以使用他们的 API 并免费提出 LLM 请求。

为了使用 Python 来处理这些请求,请通过运行 pip install groq 安装 Groq python 包。然后,我们将其导入到我们的代码中,如下所示:

import os
from groq import Groq

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)
登录后复制
登录后复制
登录后复制

请务必将 api 密钥设置为环境变量。

可以通过添加以下内容来提出简单的 LLM 请求:

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

在这种情况下,我们请LLM解释一下公式1是什么。在控制台中运行程序后,应该打印 llama3-8b 的输出。您可以尝试一下并切换模型以及提示。

创建自定义聊天机器人

现在,让我们为您喜欢的任何角色(例如马里奥)创建一个聊天机器人。目前,法学硕士以中立/信息丰富的语气做出回应。然而,通过赋予法学硕士一个系统角色,我们可以确保它像马里奥一样做出反应,为对话增添个性和乐趣。这为互动奠定了基调,因此您会得到有趣且标志性的回应,例如“这是我,马里奥!”让事情保持吸引力。

让我们为我们的请求添加系统角色:

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "system",
            "content": "You are a super mario chatbot. Always answer in his style, and create witty responses."
        },
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

现在,法学硕士将用《马里奥赛车》来解释什么是一级方程式赛车!

Utilizing Generative AI with Python

系统角色也非常适合其他用例,例如虚拟客户支持代理、教育导师或创意写作助手,确保法学硕士以适合每个角色的特定氛围和需求的方式做出响应。

总结文本

现在我们已经了解了如何使用特定提示和系统角色发出 LLM 请求,让我们尝试创建一个摘要工具。

在同一目录中创建一个名为article.txt 的文本文件,然后粘贴到您选择的任何文章中。对于这一步,请确保文章不要太长。

在代码中,我们首先加载该文本。

import os
from groq import Groq

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)
登录后复制
登录后复制
登录后复制

现在,让我们创建一个可以发送给 LLM 的提示,告诉它用要点总结文本。

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

我们首先写出提示,给LLM清晰简洁的指示。然后,我们提供应该总结的文本。

现在,我们所要做的就是使用我们刚刚创建的提示致电 LLM:

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "system",
            "content": "You are a super mario chatbot. Always answer in his style, and create witty responses."
        },
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

运行此命令,您应该会看到您授予法学硕士学位的文章的要点摘要!

现在,尝试粘贴一篇很长的文章,甚至可能是整本书——比如弗朗茨·卡夫卡的《变形记》。

请注意,LLM 返回错误。你给的太多了,无法一下子总结出来。

总结一本书

Utilizing Generative AI with Python

LLM 中的上下文窗口是指它在一次调用中可以处理和记住的文本量。这意味着虽然它非常适合一次性总结一篇文章,但它无法一次处理整本书,因为文本超出了其吸收和生成连贯响应的能力。

那么,我们该如何解决这个问题呢?我们可以通过“分块”这本书来做到这一点。我们将这本书分成了法学硕士可以管理的“块”,并告诉它总结这些内容。然后,一旦我们有了每个块的摘要,我们就可以将这些摘要总结为一个连贯的摘要。

您可以像这样将字符串分成块(请务必导入 textwrap):

with open('article.txt', 'r') as file:
    content = file.read()
登录后复制

您可以稍后更改宽度,看看您喜欢什么并给您最好的结果。

现在我们已经有了所有这些块,让我们总结一下它们,并将响应保存在名为answers的变量中。

prompt = f"""
Summarize the following text in bullet points for easy reading.

Text:
{content}
"""
登录后复制

如果您运行此代码并打印答案,您应该会看到一个长字符串,其中包含它创建的每个“块”/部分的项目符号点摘要。

现在,我们所要做的就是再次使用法学硕士,以便使用所有章节摘要创建一个连贯的摘要。

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": prompt,
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制

现在,当您运行代码时,您应该会看到整本书的摘要!很了不起,对吧?

注意:根据书的大小,您可能需要多次“分块”/告诉法学硕士提供较短的回复。如果“块”摘要太多,最终的摘要提示可能仍然太大。

重新提示

您可能已经注意到,即使我们告诉法学硕士用要点来回应,例如,它并不总是提供相同的回应。有时,它可能会添加标题或一些解释。有时,它可能只是提供要点。

作为一名程序员,这有时可能会导致处理结果变得困难。 我们如何确保法学硕士以特定格式提供更一致的答案?

让我们制作一个情感分析工具。我们将为 LLM 提供一个悲伤的故事,并让它得出从 -1 到 1 的情绪分数。

像这样:

import os
from groq import Groq

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)
登录后复制
登录后复制
登录后复制

如果多次运行此命令,您会发现响应并不总是我们指定的格式。但是,如果我们想依赖该格式来提取数字并执行进一步的计算,那就令人沮丧了。处理不当可能会导致我们的程序崩溃。

重新提示是调整和完善提供给 LLM 的输入以引导其达到所需响应或格式的过程。为了验证需要输出为“情绪:0.5”的情绪工具的格式,您可以通过调整提示来重新提示 LLM,以明确指示模型仅返回该确切格式的情绪分数,从而确保结果的一致性回复。

我们可以创建一个函数来检查是否使用正则表达式提供了预期的格式(因此请务必导入正则表达式)。

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

现在,在我们收到 LLM 的响应后,我们可以调用该函数。如果函数返回 true,那么我们就知道格式正确。如果它返回 false,那么我们知道我们应该重新提示 LLM 并重试。

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "system",
            "content": "You are a super mario chatbot. Always answer in his style, and create witty responses."
        },
        {
            "role": "user",
            "content": "Explain formula 1.",
        }
    ],
    model="llama3-8b-8192",
)
print(chat_completion.choices[0].message.content)
登录后复制
登录后复制
登录后复制

当然,这是非常基本的重新提示。在第二次 LLM 调用中,LLM 仍可能提供不正确的格式。但是,现在格式一致的响应的成功率应该更高。

借助这些工具和技术,您现在可以将 LLM 集成到您的 Python 代码中并有效地验证输出。有任何问题请随时评论!

如果您想查看完整代码,请访问 Github 存储库。

P.S:这是我为 SCU 的 ACM 分会举办的研讨会的博客文章版本。

以上是通过 Python 使用生成式 AI的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python和时间:充分利用您的学习时间 Python和时间:充分利用您的学习时间 Apr 14, 2025 am 12:02 AM

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

学习Python:2小时的每日学习是否足够? 学习Python:2小时的每日学习是否足够? Apr 18, 2025 am 12:22 AM

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

Python vs. C:了解关键差异 Python vs. C:了解关键差异 Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

Python标准库的哪一部分是:列表或数组? Python标准库的哪一部分是:列表或数组? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

Web开发的Python:关键应用程序 Web开发的Python:关键应用程序 Apr 18, 2025 am 12:20 AM

Python在Web开发中的关键应用包括使用Django和Flask框架、API开发、数据分析与可视化、机器学习与AI、以及性能优化。1.Django和Flask框架:Django适合快速开发复杂应用,Flask适用于小型或高度自定义项目。2.API开发:使用Flask或DjangoRESTFramework构建RESTfulAPI。3.数据分析与可视化:利用Python处理数据并通过Web界面展示。4.机器学习与AI:Python用于构建智能Web应用。5.性能优化:通过异步编程、缓存和代码优

See all articles