搜尋
首頁後端開發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,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

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 - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能