搜索
首页后端开发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
Python中的合并列表:选择正确的方法Python中的合并列表:选择正确的方法May 14, 2025 am 12:11 AM

Tomergelistsinpython,YouCanusethe操作员,estextMethod,ListComprehension,Oritertools

如何在Python 3中加入两个列表?如何在Python 3中加入两个列表?May 14, 2025 am 12:09 AM

在Python3中,可以通过多种方法连接两个列表:1)使用 运算符,适用于小列表,但对大列表效率低;2)使用extend方法,适用于大列表,内存效率高,但会修改原列表;3)使用*运算符,适用于合并多个列表,不修改原列表;4)使用itertools.chain,适用于大数据集,内存效率高。

Python串联列表字符串Python串联列表字符串May 14, 2025 am 12:08 AM

使用join()方法是Python中从列表连接字符串最有效的方法。1)使用join()方法高效且易读。2)循环使用 运算符对大列表效率低。3)列表推导式与join()结合适用于需要转换的场景。4)reduce()方法适用于其他类型归约,但对字符串连接效率低。完整句子结束。

Python执行,那是什么?Python执行,那是什么?May 14, 2025 am 12:06 AM

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python:关键功能是什么Python:关键功能是什么May 14, 2025 am 12:02 AM

Python的关键特性包括:1.语法简洁易懂,适合初学者;2.动态类型系统,提高开发速度;3.丰富的标准库,支持多种任务;4.强大的社区和生态系统,提供广泛支持;5.解释性,适合脚本和快速原型开发;6.多范式支持,适用于各种编程风格。

Python:编译器还是解释器?Python:编译器还是解释器?May 13, 2025 am 12:10 AM

Python是解释型语言,但也包含编译过程。1)Python代码先编译成字节码。2)字节码由Python虚拟机解释执行。3)这种混合机制使Python既灵活又高效,但执行速度不如完全编译型语言。

python用于循环与循环时:何时使用哪个?python用于循环与循环时:何时使用哪个?May 13, 2025 am 12:07 AM

useeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.ForloopSareIdeAlforkNownsences,而WhileLeleLeleLeleLoopSituationSituationSituationsItuationSuationSituationswithUndEtermentersitations。

Python循环:最常见的错误Python循环:最常见的错误May 13, 2025 am 12:07 AM

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐个偏置,零indexingissues,andnestedloopineflinefficiencies

See all articles

热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

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

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能