検索
ホームページバックエンド開発Python チュートリアルLangChain と Llama を使用して記事ジェネレーターを構築する AI 開発者の旅

LangChain と Llama3 を使用した記事ジェネレーターの構築: AI 開発者の旅

AI 開発者として、私はしばしば、複雑な大規模言語モデル (LLM) の対話をより管理しやすくする方法を探しています。 LangChain が私の注目を集めたのは、AI 開発コミュニティでの人気の高まりだけでなく、LLM 統合の一般的な課題を解決するための実践的なアプローチのためでもありました。複雑な LLM 操作を合理化されたワークフローに変換するというこのフレームワークの評判に非常に興味をそそられ、テストしてみました。私は、LangChain の機能と Llama3 モデルを組み合わせて、現実世界のアプリケーションを使用するツールを作成する記事生成システムを構築することにしました。

LangChain が理にかなっている理由

LangChain は、複雑な操作を処理するための構造化された直感的なアプローチを提供することで、LLM との対話方法を変えます。これは、各コンポーネントが特定の目的を果たす、適切に設計された開発キットであると考えてください。このフレームワークは、生の API 呼び出しとプロンプトの手動管理をやりくりする代わりに、開発者の観点から自然に感じられるクリーンなインターフェイスを提供します。それは単にプロセスを簡素化するだけではなく、LLM アプリケーションの信頼性と保守性を高めることです。

LangChain の主要コンポーネント

LangChain はその中核として、より複雑な動作を作成するために相互にリンクする一連の操作であるチェーンを使用します。これらのチェーンは、プロンプトのフォーマットからモデル応答の処理まで、あらゆることを行います。このフレームワークにはプロンプトを管理し、インタラクション全体でコンテキストを維持するための高度なシステムが含まれていますが、ここでは主に記事ジェネレーターのチェーンとプロンプトの側面に焦点を当てます。

記事ジェネレーター

このプロジェクトでは、トピック、長さ、論調、対象読者などの特定のパラメータに基づいてカスタマイズされた記事を生成できるシステムという、実用的なものを構築したいと考えていました。 Ollama を通じてアクセスされる Llama3 モデルは、このタスクに適切なパフォーマンスと柔軟性のバランスを提供しました。

はじめる

セットアップは簡単です:

  1. まず、必要なパッケージをインストールしました。
pip install langchain langchain-ollama requests
  1. 次に、Ollama をセットアップしました。
    1. Ollama を https://ollama.com/blog/llama3 からダウンロードしてインストールしました
    2. 新しいターミナルで、Ollama サーバーを起動しました。
ollama serve
  1. Llama3 モデルをプルしました:
ollama pull llama3

記事ジェネレーターの使用中、Ollama サーバーはターミナルで実行されている必要があります。閉じていると、ジェネレーターはモデルに接続できません。

コアコンポーネントの構築

システムの各部分がどのように機能するかを詳しく見てみましょう:

接続管理

この簡単なチェックは、接続の問題を早期に発見することで実行時エラーを回避するのに役立ちます。これは、Ollama サーバーへの接続を確認する信頼できる方法です:

pip install langchain langchain-ollama requests

モデル構成

生成されたコンテンツの適切なバランスを得るには、モデルのセットアップが重要です:

ollama serve

これらのパラメータは、記事生成のためにさまざまな組み合わせをテストした後に見つけたスイートスポットを表しています。

Temperature (0.7): 出力のランダム性を制御します。値が低いほど (0.3 など)、テキストがより予測しやすくなり、値が高いほど (0.9 など)、よりクリエイティブになります。 0.7はバランスが良いです。

Top_p (0.9): このパラメーターは核サンプリングとも呼ばれ、考慮する単語オプションの数をモデルに指示します。 0.9 では、トピックに焦点を当てながらテキストの面白さを維持するのに十分なオプションが検討されます。

num_ctx(4096): コンテキスト ウィンドウのサイズ、つまりモデルが一度に処理できるテキストの量。これにより、およそ 3000 ~ 3500 語を処理できるため、入力と実質的な記事出力の両方に十分なスペースが得られます。

迅速なエンジニアリング

プロンプト テンプレートでは、モデルに何を求めるかを定義します。

ollama pull llama3

生成パイプライン

LangChain の最もエレガントな機能の 1 つは、そのシンプルなチェーン構成です。

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

この 1 行により、プロンプトの書式設定、モデルの対話、応答処理を処理する完全な生成パイプラインが作成されます。

コマンドラインインターフェース

ツールを使いやすくするために、コマンド ライン インターフェイスを実装しました。

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 の使用に関するいくつかの重要な洞察を発見しました。

  1. パフォーマンス パターン: 最初の世代はモデルの読み込みにより時間がかかりますが、その後の実行は大幅に高速化されます。
  2. コンテキスト管理: 4096 トークンのコンテキスト ウィンドウは、良好なパフォーマンスを維持しながら、ほとんどの記事に十分なスペースを提供します。
  3. 生成パラメータ: 温度 (0.7) および top_p (0.9) 設定は、創造性と一貫性の間の最適なバランスを提供します。

最終的な考え

この記事ジェネレーターの構築により、AI 開発における LangChain の実用的な価値が実証されました。 LLM インタラクションの複雑さを処理しながら、開発者は便利な機能の構築に集中できるようになります。このフレームワークは抽象化と制御のバランスをとり、信頼性の高い AI を活用したアプリケーションの作成を容易にします。

この分野の親愛なる同僚や唯一の愛好家にとって、LangChain は開発に必要なすべての意味を提供すると確信しています。そして最も優れている点は、柔軟性とのトレードオフではないということです。 AI ツールの分野が飛躍的に成長していることを考えると、LangChain のようなフレームワークは、実用的な本番環境に対応したアプリケーションを構築する上でより価値のあるものになるでしょう。

Building an Article Generator with LangChain and LlamaAn AI Developer

オウムとチェーンの LangChain ロゴには、巧妙な意味が隠されています。オウムは、LLM が人間の言語を繰り返し、再加工するため、「確率的オウム」と呼ばれることがあることを指します。チェーン部分は、フレームワークが言語モデルの「オウム」を有用なアプリケーションに「チェーン」するのにどのように役立つかについての遊び心のある参照です。

以上がLangChain と Llama を使用して記事ジェネレーターを構築する AI 開発者の旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonの融合リスト:適切な方法を選択しますPythonの融合リスト:適切な方法を選択しますMay 14, 2025 am 12:11 AM

Tomergelistsinpython、あなたはオペレーター、extendmethod、listcomfulting、olitertools.chain、それぞれの特異的advantages:1)operatorissimplebutlessforlargelist;

Python 3の2つのリストを連結する方法は?Python 3の2つのリストを連結する方法は?May 14, 2025 am 12:09 AM

Python 3では、2つのリストをさまざまな方法で接続できます。1)小さなリストに適したオペレーターを使用しますが、大きなリストには非効率的です。 2)メモリ効率が高い大規模なリストに適した拡張方法を使用しますが、元のリストは変更されます。 3)元のリストを変更せずに、複数のリストをマージするのに適した *オペレーターを使用します。 4)Itertools.chainを使用します。これは、メモリ効率が高い大きなデータセットに適しています。

Python Concatenateリスト文字列Python Concatenateリスト文字列May 14, 2025 am 12:08 AM

Join()メソッドを使用することは、Pythonのリストから文字列を接続する最も効率的な方法です。 1)join()メソッドを使用して、効率的で読みやすくなります。 2)サイクルは、大きなリストに演算子を非効率的に使用します。 3)リスト理解とJoin()の組み合わせは、変換が必要なシナリオに適しています。 4)redoce()メソッドは、他のタイプの削減に適していますが、文字列の連結には非効率的です。完全な文は終了します。

Pythonの実行、それは何ですか?Pythonの実行、それは何ですか?May 14, 2025 am 12:06 AM

pythonexexecutionistheprocessoftransforningpythoncodeintoexecutabletructions.1)interpreterreadSthecode、変換intobytecode、thepythonvirtualmachine(pvm)executes.2)theglobalinterpreeterlock(gil)管理委員会、

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コードは最初にBytecodeにコンパイルされます。 2)ByteCodeは、Python Virtual Machineによって解釈および実行されます。 3)このハイブリッドメカニズムにより、Pythonは柔軟で効率的になりますが、完全にコンパイルされた言語ほど高速ではありません。

ループvs whileループ用のpython:いつ使用するか?ループvs whileループ用のpython:いつ使用するか?May 13, 2025 am 12:07 AM

useaforloopwhenteratingoverasequenceor foraspificnumberoftimes; useawhileloopwhentinuninguntinuntilaConditionismet.forloopsareidealforknownownownownownownoptinuptinuptinuptinuptinutionsituations whileoopsuitsituations withinterminedationations。

Pythonループ:最も一般的なエラーPythonループ:最も一般的なエラーMay 13, 2025 am 12:07 AM

pythonloopscanleadtoErrorslikeinfiniteloops、ModifiningListsDuringiteration、Off-Oneerrors、Zero-dexingissues、およびNestededLoopinefficiencies.toavoidhese:1)use'i

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター