身為 AI 開發人員,我經常發現自己在尋找讓複雜的大型語言模型 (LLM) 互動更易於管理的方法。 LangChain 引起了我的注意,不僅因為它在人工智慧開發社群中越來越受歡迎,還因為它解決常見的 LLM 整合挑戰的實用方法。該框架將複雜的法學碩士操作轉變為簡化的工作流程的聲譽引起了我的興趣,並對其進行了測試。我決定建立一個文章生成系統,將 LangChain 的功能與 Llama3 模型結合起來,創建一個具有實際應用的工具。
LangChain 透過提供結構化、直覺的方法來處理複雜操作,改變了我們與法學碩士互動的方式。將其視為精心設計的開發套件,每個組件都有特定的用途。該框架提供了一個乾淨的介面,從開發人員的角度來看,感覺很自然,而不是兼顧原始 API 呼叫和手動管理提示。這不僅僅是為了簡化流程,而是為了使 LLM 應用程式更加可靠和可維護。
LangChain 的核心是使用鏈,即連接在一起的操作序列來創建更複雜的行為。這些鏈執行從格式化提示到處理模型回應的所有操作。雖然該框架包括用於管理提示和維護互動上下文的複雜系統,但我將主要關注我們的文章生成器的鍊和提示方面。
對於這個項目,我想建立一些實用的系統,可以根據主題、長度、語氣和目標受眾等特定參數產生定製文章。透過 Ollama 存取的 Llama3 模型為這項任務提供了效能和靈活性的適當平衡。
設定很簡單:
pip install langchain langchain-ollama requests
ollama serve
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 )
生成器的使用非常簡單:執行程式碼並傳遞參數。
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
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 的幾個重要見解:
建構這篇文章產生器展示了LangChain在AI開發方面的實用價值。它可以處理法學碩士互動的複雜性,同時讓開發人員可以自由地專注於建立有用的功能。該框架在抽象和控制之間取得了平衡,使創建可靠的人工智慧應用程式變得更加容易。
對於該領域的親愛的同事或單獨的愛好者,我相信LangChain提供了開發所需的所有必要意義,而最好的部分是:它不是與靈活性的權衡。考慮到人工智慧工具領域正在呈指數級增長,像LangChain這樣的框架對於建立實用的、生產就緒的應用程式將變得更有價值。
浪鏈鸚鵡和鏈條的標誌背後蘊藏著巧妙的寓意。鸚鵡指的是法學碩士有時被稱為“隨機鸚鵡”,因為他們重複和改造人類語言。鏈部分是一個有趣的參考,說明框架如何幫助將語言模型“鸚鵡”“鏈接”到有用的應用程式中。
以上是使用 LangChain 和 Llama 建立文章生成器人工智慧開發者之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!