使用 LangChain 和 Llama3 建立文章產生器:人工智慧開發者之旅
身為 AI 開發人員,我經常發現自己在尋找讓複雜的大型語言模型 (LLM) 互動更易於管理的方法。 LangChain 引起了我的注意,不僅因為它在人工智慧開發社群中越來越受歡迎,還因為它解決常見的 LLM 整合挑戰的實用方法。該框架將複雜的法學碩士操作轉變為簡化的工作流程的聲譽引起了我的興趣,並對其進行了測試。我決定建立一個文章生成系統,將 LangChain 的功能與 Llama3 模型結合起來,創建一個具有實際應用的工具。
為什麼浪鏈有意義
LangChain 透過提供結構化、直覺的方法來處理複雜操作,改變了我們與法學碩士互動的方式。將其視為精心設計的開發套件,每個組件都有特定的用途。該框架提供了一個乾淨的介面,從開發人員的角度來看,感覺很自然,而不是兼顧原始 API 呼叫和手動管理提示。這不僅僅是為了簡化流程,而是為了使 LLM 應用程式更加可靠和可維護。
浪鏈關鍵組件
LangChain 的核心是使用鏈,即連接在一起的操作序列來創建更複雜的行為。這些鏈執行從格式化提示到處理模型回應的所有操作。雖然該框架包括用於管理提示和維護互動上下文的複雜系統,但我將主要關注我們的文章生成器的鍊和提示方面。
文章產生器
對於這個項目,我想建立一些實用的系統,可以根據主題、長度、語氣和目標受眾等特定參數產生定製文章。透過 Ollama 存取的 Llama3 模型為這項任務提供了效能和靈活性的適當平衡。
入門
設定很簡單:
- 首先,我安裝了必要的軟體包:
pip install langchain langchain-ollama requests
- 然後,我設定了 Ollama:
- 我從 https://ollama.com/blog/llama3 下載並安裝了 Ollama
- 在一個新終端機中,我啟動了 Ollama 伺服器:
ollama serve
- 我拉了Llama3模型:
ollama pull llama3
使用文章產生器時,Ollama 伺服器必須在其終端機中運作。如果關閉,生成器將無法連接到模型。
建構核心元件
讓我們來分解系統各部分的工作原理:
連線管理
這個簡單的檢查有助於透過儘早發現連線問題來避免執行階段錯誤。這是檢查 Ollama 伺服器連線的可靠方法:
pip install langchain langchain-ollama requests
型號配置
模型設定對於在我們產生的內容中獲得適當的平衡至關重要:
ollama serve
這些參數代表了我在測試文章產生的各種組合後發現的最佳點。
溫度 (0.7): 控制輸出的隨機性。較低的值(如 0.3)將使文字更可預測,而較高的值(如 0.9)將使其更具創意。 0.7 是一個很好的平衡。
Top_p (0.9): 此參數也稱為核心取樣,告訴模型要考慮多少個單字選項。在 0.9 時,它會考慮足夠的選項來保持文本的趣味性,同時保持對主題的關注。
num_ctx(4096): 上下文視窗大小,或模型一次可以處理多少個文字。這為輸入和大量文章輸出提供了足夠的空間,因為它可以處理大約 3000-3500 個單字。
及時工程
提示範本是我們定義模型所需內容的地方:
ollama pull llama3
發電管
浪鏈最優雅的特點之一就是其簡單的鏈組成:
def check_ollama_connection(): """ Check if Ollama server is running """ try: requests.get('http://localhost:11434/api/tags') return True except requests.exceptions.ConnectionError: return False
這一行創建了一個完整的生成管道,用於處理提示格式化、模型互動和回應處理。
命令列介面
為了讓該工具對使用者友好,我實作了一個命令列介面:
llm = OllamaLLM( model="llama3", temperature=0.7, # Balances creativity and consistency top_p=0.9, # Helps with text diversity num_ctx=4096 # Sets the context window )
實際使用
生成器的使用非常簡單:執行程式碼並傳遞參數。
例子#1
article_template = """ You are a professional content writer tasked with creating a comprehensive article. Topic: {topic} Writing Requirements: 1. Length: Approximately {word_count} words 2. Style: {tone} tone 3. Target Audience: {audience} 4. Format: Plain text without any markdown notation 5. Additional Details/Requirements: {extra_details} Content Structure Guidelines: - Start with an engaging introduction that hooks the reader - Organize content into clear sections with descriptive headings (not numbered) - Include relevant examples, statistics, or case studies when appropriate - Provide practical insights and actionable takeaways - End with a compelling conclusion that summarizes key points - Ensure smooth transitions between paragraphs and sections Writing Style Guidelines: - Use clear, concise language appropriate for the target audience - Avoid jargon unless necessary for the target audience - Incorporate relevant examples and real-world applications - Maintain an engaging and natural flow throughout the article - Use active voice predominantly - Include specific details and evidence to support main points - Ensure proper paragraph breaks for readability Additional Notes: - Do not use any markdown formatting - Keep paragraphs concise and focused - Use proper spacing between sections - If technical terms are used, provide brief explanations - Include a brief overview of what will be covered at the start Please write the article now: """
產生的文章:
chain = prompt | llm
例子#2
def parse_arguments(): """ Parse command line arguments """ parser = argparse.ArgumentParser(description='Generate an article using AI') parser.add_argument('--topic', type=str, required=True, help='The topic of the article') parser.add_argument('--word-count', type=int, default=800, help='Target word count (default: 800)') parser.add_argument('--tone', type=str, default='professional', choices=['professional', 'casual', 'academic', 'informative', 'technical'], help='Writing tone (default: professional)') parser.add_argument('--audience', type=str, default='general', help='Target audience (default: general)') parser.add_argument('--extra-details', type=str, default='', help='Additional requirements or details for the article') return parser.parse_args()
產生的文章:
python main.py \ --topic "Benefits of playing board games with friends" \ --word-count 200 \ --tone casual \ --audience "Board games lovers" \ --extra-details "Avoid markdown notation"
主要經驗教訓
透過這個項目,我發現了關於使用 LangChain 的幾個重要見解:
- 效能模式:由於模型加載,第一代需要更長的時間,但後續運行速度明顯更快。
- 上下文管理:4096 個令牌的上下文視窗為大多數文章提供了充足的空間,同時保持良好的效能。
- 產生參數:Temperature (0.7) 和 top_p (0.9) 設定提供了創造力和連貫性之間的最佳平衡。
最後的想法
建構這篇文章產生器展示了LangChain在AI開發方面的實用價值。它可以處理法學碩士互動的複雜性,同時讓開發人員可以自由地專注於建立有用的功能。該框架在抽象和控制之間取得了平衡,使創建可靠的人工智慧應用程式變得更加容易。
對於該領域的親愛的同事或單獨的愛好者,我相信LangChain提供了開發所需的所有必要意義,而最好的部分是:它不是與靈活性的權衡。考慮到人工智慧工具領域正在呈指數級增長,像LangChain這樣的框架對於建立實用的、生產就緒的應用程式將變得更有價值。
浪鏈鸚鵡和鏈條的標誌背後蘊藏著巧妙的寓意。鸚鵡指的是法學碩士有時被稱為“隨機鸚鵡”,因為他們重複和改造人類語言。鏈部分是一個有趣的參考,說明框架如何幫助將語言模型“鸚鵡”“鏈接”到有用的應用程式中。
以上是使用 LangChain 和 Llama 建立文章生成器人工智慧開發者之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

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

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

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


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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

記事本++7.3.1
好用且免費的程式碼編輯器