首頁 後端開發 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 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
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教學
1669
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
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標準庫的哪一部分是:列表或數組? 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的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python vs. C:了解關鍵差異 Python vs. C:了解關鍵差異 Apr 21, 2025 am 12:18 AM

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

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