😺

LLMに関するメモ

2024/11/29に公開

概要

LLMに関するツールについて、備忘録です。

LangChain

https://www.langchain.com/

以下のように説明されていました。

LangChain is a composable framework to build with LLMs. LangGraph is the orchestration framework for controllable agentic workflows.

LlamaIndex

https://docs.llamaindex.ai/en/stable/

以下のように説明されていました。

LlamaIndex is a framework for building context-augmented generative AI applications with LLMs including agents and workflows.

LangChain と LlamaIndex

gpt-4oの回答は以下でした。

LangChainとLlamaIndexはどちらも、LLMs(大規模言語モデル)を利用したアプリケーション開発を支援するフレームワーク

簡単に調べてみたところ、RAG(Retrieval-Augmented Generation)を行う際には、LlamaIndexがより簡単に使用できるようでした。

Ollama

https://github.com/ollama/ollama

以下のように説明されていました。

Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models.

ローカル環境でLLMを実行するためのツールのようでした。

以下のページからダウンロードします。

https://ollama.com/download

アプリの起動後、以下のようなコマンドから使用することができました。

ollama run llama3.2
>>> 日本の首都は?
東京です。
>>> /bye

また、LlamaIndexと組み合わせて、PythonからOllamaを使用することもできました。

https://docs.llamaindex.ai/en/stable/api_reference/llms/ollama/

pip install llama-index-llms-ollama
from llama_index.llms.ollama import Ollama

llm = Ollama(model="llama3.2", request_timeout=60.0)

response = llm.complete("日本の首都は?")
print(response)

OpenRouter

https://openrouter.ai/docs/quick-start

以下のように説明されていました。

OpenRouter provides an OpenAI-compatible completion API to 278 models & providers that you can call directly, or using the OpenAI SDK. Additionally, some third-party SDKs are available.

アカウント登録後、モデルを選択して、チャットなどを試すことができました。

クレジットを購入することで、gpt-4oなども使用することができました。

また、LlamaIndexと組み合わせて、PythonからOpenRouterを使用することもできました。

https://docs.llamaindex.ai/en/stable/api_reference/llms/openrouter/

OpenRouterでAPIキーを発行後、以下のようなスクリプトにより実行できました。

以下は、モデルMeta: Llama 3.2 1B Instruct (free)を使用した例です。

from llama_index.llms.openrouter import OpenRouter
from llama_index.core.llms import ChatMessage
from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.getenv("OPENROUTER_API_KEY")

llm = OpenRouter(
    api_key=api_key,
    model="meta-llama/llama-3.2-1b-instruct:free",
)

message = ChatMessage(role="user", content="日本の首都は?")
resp = llm.chat([message])
print(resp)

以下は、モデルOpenAI: GPT-4o (2024-11-20)を使用した例です。modelのみを変更することで、共通のスクリプトを利用することができました。

pip install llama-index-llms-openrouter
llm = OpenRouter(
    model="openai/gpt-4o-2024-11-20",
)

message = ChatMessage(role="user", content="日本の首都は?")
resp = llm.chat([message])
print(resp)

モデルの名前は、以下のページなどで見つけることができました。

https://openrouter.ai/meta-llama/llama-3.2-1b-instruct:free

LiteLLM

https://www.litellm.ai/

以下のように説明されていました。

LLM Gateway to manage authentication, loadbalancing, and spend tracking across 100+ LLMs. All in the OpenAI format.

以下に、LiteLLMからOpenRouterを使用する方法が記載されています。

https://docs.litellm.ai/docs/providers/openrouter

以下のようなコードにより、実行することができました。

pip install litellm
from litellm import completion
import os
api_key = os.getenv("OPENROUTER_API_KEY")
response = completion(
            model="openrouter/openai/gpt-4o-2024-11-20",
            messages=[{ "content": "日本の首都は?","role": "user"}],
)
print(response.choices[0].message.content)

まとめ

今回あげたツールの違いを十分に理解できておらず、また他に有用なツールが数多く存在するかと思いますが、LLM周辺のツールの理解にあたり、本記事が参考になりましたら幸いです。

Discussion