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

LangChain と Llama を使用して記事ジェネレーターを構築する AI 開発者の旅

Barbara Streisand
リリース: 2024-12-30 09:25:26
オリジナル
423 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート