Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

🦜️🔗 LangChain : Get Started : クイックスタート

Posted on 08/20/2023 by Sales Information

🦜️🔗LangChain : Get Started : クイックスタート (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/20/2023

* 本ページは、LangChain の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

  • Get Started : Quickstart

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

◆ クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能研究開発支援
    1. 人工知能研修サービス(経営者層向けオンサイト研修)
    2. テクニカルコンサルティングサービス
    3. 実証実験(プロトタイプ構築)
    4. アプリケーションへの実装

  • 人工知能研修サービス

  • PoC(概念実証)を失敗させないための支援
◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

🦜️🔗 LangChain : Get Started : クイックスタート

環境設定

LangChain の使用は通常は一つまたはそれ以上のモデルプロバイダー、データストア、API 等との統合を必要とします。この例では、OpenAI のモデル API を使用します。

最初にそれらの Python パッケージをインストールする必要があります :

pip install openai

API へのアクセスは API キーを必要とします、これはアカウントを作成してここにアクセスして取得できます。キーを持てば、以下を実行して環境変数としてそれを設定することを望みます :

export OPENAI_API_KEY="..."

環境変数を設定したくない場合は、OpenAI LLM クラスを初期化するとき名前付きパラメータ openai_api_key 経由でキーを直接渡すことができます :

from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")

 

アプリケーションの構築

これで言語モデルアプリケーションの構築を開始することができます。LangChain は言語モデルアプリケーションを構築するために使用できる多くのモジュールを提供しています。モジュールは単純なアプリケーションでスタンドアローンとして使用できて、それらはより複雑なユースケースに対しては組み合わせることができてます。

LangChain アプリケーションの中核のビルディングブロックは LLMChain です。これは 3 つのものを組み合わせます :

  • LLM : 言語モデルはここでは中核の推論エンジンです。LangChain を操作するには、様々なタイプの言語モデルとそれらを扱う方法を理解する必要があります。

  • プロンプト・テンプレート: これは言語モデルにインストラクションを提供します。これは言語モデルが出力するものを制御しますので、プロンプトを構築する方法や様々なプロンプティング・ストラテジーを理解することは重要です。

  • 出力パーサー : これらは LLM からの raw レスポンスをより workable (実行・運用可能) な形式に変換し、下流で出力を使用することを簡単にします。

この getting started ガイドでは、これらの 3 つのコンポーネントをそれぞれカバーし、それからそれらのすべてを組み合わせる LLMChain をカバーします。これらの概念を理解すると、LangChain アプリケーションを使用してカスタマイズできる準備ができます。殆どの LangChain アプリケーションは使用される LLM and/or プロンプトを configure することを可能にしますので、これらを活用する方法を知ることは大きな成功要因 (enabler) になります。

 

LLM

LangChain では以下のように呼称される、2 つのタイプの言語モデルがあります :

  • LLM : これは入力として文字列を受け取り、文字列を返す言語モデルです。

  • ChatModel : これは入力としてメッセージのリストを受け取り、メッセージを返します。

LLM への入力/出力は単純で簡単に理解できます – 文字列です。しかし ChatModel についてはどうでしょう?そこでの入力は ChatMessages のリストで、出力は単一の ChatMessage です。ChatMessage は 2 つの必須の構成要素を持ちます :

  • コンテンツ (content) : これはメッセージの内容です。

  • ロール (role) : これはエンティティのロールで、そこから ChatMessage が発生します。

LangChain は異なるロールを簡単に識別するために幾つかのオブジェクトを提供しています :

  • HumanMessage: 人間/ユーザからの ChatMessage
  • AIMessage: AI/アシスタントからの ChatMessage
  • SystemMessage: システムからの ChatMessage
  • FunctionMessage: 関数呼び出しからの ChatMessage

これらのロールが当てはまらないようであれば、ロールを手動で指定できる ChatMessage クラスもあります。これらの様々なメッセージを効果的に使用する方法の詳細は、プロンプティング・ガイドをご覧ください。

LangChain は両方に対する標準的なインターフェイスを公開していますが、与えられた言語モデルに対するプロンプトを構築するためにこれらの違いを理解することは有用です。LangChain が公開する標準的なインターフェイスは 2 つのメソッドを持ちます :

  • predict: 文字列を受け取り、文字列を返します。
  • predict_messages: メッセージのリストを受け取り、メッセージを返します。

これらの異なるタイプのモデルと異なるタイプの入力を操作する方法を見てみしょう。最初に、LLM と ChatModel をインポートしましょう。

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI

llm = OpenAI()
chat_model = ChatOpenAI()

llm.predict("hi!")
>>> "Hi"

chat_model.predict("hi!")
>>> "Hi"

OpenAI と ChatOpenAI オブジェクトは基本的には単なる configuration オブジェクトです。temperature 等のようなパラメータでそれらを初期化して渡すことができます。

次に、predict メソッドを使用して文字列入力を実行してみましょう。

text = "What would be a good company name for a company that makes colorful socks?"

llm.predict(text)
# >> Feetful of Fun

chat_model.predict(text)
# >> Socks O'Color

最後に、predict_messages メソッドを使用してメッセージのリストを実行しましょう。

from langchain.schema import HumanMessage

text = "What would be a good company name for a company that makes colorful socks?"
messages = [HumanMessage(content=text)]

llm.predict_messages(messages)
# >> Feetful of Fun

chat_model.predict_messages(messages)
# >> Socks O'Color

これら両方のメソッドに対して、キーワード引数としてパラメータを渡すこともできます。例えば、オブジェクトが構成されていたものから使用される temperature を調整するために temperature=0 を渡すことができるでしょう。実行時にどのような値が渡されても、オブジェクトが構成されていたものを常にオーバライドします。

 

プロンプト・テンプレート

殆どの LLM アプリケーションはユーザ入力を LLM に直接は渡しません。通常はそれらはユーザ入力を、プロンプトテンプレートと呼称される、より大きなテキストのピースに追加します、これは手元の特定のタスクで追加のコンテキストを提供します。

前の例では、モデルに渡したテキストは会社名を生成するインストラクションを含んでいました。私たちのアプリケーションについて、ユーザがモデルにインストラクションを与えることについて心配する必要なく、会社/製品の説明だけを提供する必要があるなら、それは素晴らしいです。

PromptTemplates はまさにこれに役立ちます!これらは、ユーザ入力から完全にフォーマットされたプロンプトに進むためのすべてのロジックをバンドルしています。これは非常に単純に始めることができます – 例えば、上記の文字列を生成するプロンプトは単に次のようになります :

from langchain.prompts import PromptTemplate

prompt = PromptTemplate.from_template("What is a good name for a company that makes {product}?")
prompt.format(product="colorful socks")
What is a good name for a company that makes colorful socks?

けれども、生の文字列のフォーマッティングよりもこれらを使用する優位点は幾つかあります。変数を「部分的に」出力できます – 例えば一部の変数だけを一度にフォーマットできます。それらをまとめて組み合わせたり、様々なテンプレートを単一プロンプトに簡単に組み合わせることができます。これらの機能の説明について、詳細は section on prompts をご覧ください。

PromptTemplates はまたメッセージのリストを生成するためにも使用できます。この場合、プロンプトは内容についての情報だけでなく、各メッセージ (ロール、リスト内の位置等) も含みます。ここで、最も多く発生することは、ChatPromptTemplate が ChatMessageTemplates のリストであることです。各 ChatMessageTemplate はその ChatMessage をフォーマットする方法に対するインストラクションを含みます – そのロール、それから内容もです。Let’s take a look at this below:

from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

template = "You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

chat_prompt.format_messages(input_language="English", output_language="French", text="I love programming.")
[
    SystemMessage(content="You are a helpful assistant that translates English to French.", additional_kwargs={}),
    HumanMessage(content="I love programming.")
]

ChatPromptTemplates は ChatMessageTemplates 以外の他のものも含むことができます – 詳細は section on prompts をご覧ください。

 

出力パーサー

OutputParsers は LLM の生の出力を下流で利用できるフォーマットに変換します。OutputParsers の幾つかの主要なタイプがあり、以下を含みます :

  • LLM からのテキストを変換 -> 構造化情報 (eg JSON)
  • ChatMessage を単なる文字列に変換する。
  • 呼び出しから返されるメッセージ以外の (OpenAI 関数呼び出しのような) 追加情報を文字列に変換する。

これについての完全な情報については、section on output parsers をご覧ください。

この getting started ガイドでは、私たち自身の出力パーサーを書きます – カンマ区切りのリストをリストに変換するものです。

from langchain.schema import BaseOutputParser

class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""


    def parse(self, text: str):
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

CommaSeparatedListOutputParser().parse("hi, bye")
# >> ['hi', 'bye']

 

LLMChain

これでこれらすべてを一つのチェインに組み合わせることができます。このチェインは入力変数を受け取り、それらをプロンプト・テンプレートに渡してプロンプトを作成し、プロンプトを LLM に渡し、それから出力を (オプションの) 出力パーサーに渡します。これは、ロジックのモジュールピースをバンドルする便利な方法です。Let’s see it in action!

from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser

class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""


    def parse(self, text: str):
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

template = """You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma separated list.
ONLY return a comma separated list, and nothing more."""
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chain = LLMChain(
    llm=ChatOpenAI(),
    prompt=chat_prompt,
    output_parser=CommaSeparatedListOutputParser()
)
chain.run("colors")
# >> ['red', 'blue', 'green', 'yellow', 'orange']

 

次のステップ

This is it! 私たちは今、LangChain アプリケーションの中核のビルディングブロック – LLMChains を作成する方法を調べました。これらすべてのコンポーネント (LLM、プロンプト、出力パーサー) で更に多くのニュアンス (差異) があり、学習すべき多くの様々なコンポーネントもあります。To continue on your journey:

  • LLM, プロンプトと出力パーサーに 更に深く掘り下げる
  • 他の 主要コンポーネント を学習する
  • 特定のトピックの詳細なウォークスルーについては 有用なガイド を確認してください。
  • end-to-end なユースケース を探究する。

 

以上



クラスキャット

最近の投稿

  • LangGraph Platform : Get started : クイックスタート
  • LangGraph Platform : 概要
  • LangGraph : Prebuilt エージェント : ユーザインターフェイス
  • LangGraph : Prebuilt エージェント : 配備
  • LangGraph : Prebuilt エージェント : マルチエージェント

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (20) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2023年8月
月 火 水 木 金 土 日
 123456
78910111213
14151617181920
21222324252627
28293031  
« 7月   9月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme