2026年、LLM(大規模言語モデル)APIを活用したアプリケーション開発は、エンジニアの必須スキルとなっています。本記事では、OpenAI(ChatGPT)とAnthropic(Claude)のAPIを使って、実践的なAIアプリケーションを構築する方法を解説します。
LLM APIの概要:ChatGPT vs Claude
2026年現在、主要なLLM APIとして以下が利用されています:
- OpenAI GPT-4o / o3:最も広く使われている。マルチモーダル対応。コーディング、分析、創作に強い
- Anthropic Claude 3.5 Sonnet / Claude 4:長文処理とコード生成に優れる。安全性・倫理面も考慮された設計
- Google Gemini Ultra:Google Workspaceとの連携が強み
OpenAI APIのセットアップとPythonでの基本的な使い方
# インストール
pip install openai
# 基本的な使い方(Python)
from openai import OpenAI
client = OpenAI(api_key="your-api-key") # 実際はos.getenv("OPENAI_API_KEY")
# テキスト生成
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "あなたは優秀なPythonエンジニアです。"},
{"role": "user", "content": "Pythonでフィボナッチ数列を生成する関数を書いてください。"}
],
max_tokens=500,
temperature=0.7
)
print(response.choices[0].message.content)
print(f"使用トークン数: {response.usage.total_tokens}")
ストリーミングレスポンスの実装
ChatGPTのようにリアルタイムで文字が表示されるUXを実現するためのストリーミング実装です。
# ストリーミング(Python)
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "日本のAI活用事例を5つ教えてください"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
// ストリーミング(Node.js / Next.js API Route)
import OpenAI from 'openai';
import { OpenAIStream, StreamingTextResponse } from 'ai'; // Vercel AI SDK
const openai = new OpenAI();
export async function POST(req: Request) {
const { messages } = await req.json();
const response = await openai.chat.completions.create({
model: 'gpt-4o',
stream: true,
messages,
});
const stream = OpenAIStream(response);
return new StreamingTextResponse(stream);
}
Anthropic Claude APIの使い方
# Claude API(Python)
import anthropic
client = anthropic.Anthropic(api_key="your-api-key")
message = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
system="あなたは技術文書の専門家です。明確で分かりやすい説明を心がけてください。",
messages=[
{
"role": "user",
"content": "Pythonのデコレータパターンを初心者向けに説明してください。"
}
]
)
print(message.content[0].text)
print(f"入力トークン: {message.usage.input_tokens}")
print(f"出力トークン: {message.usage.output_tokens}")
RAG(検索拡張生成)の実装
RAGはLLMに外部の知識を動的に提供する技術で、最新情報を扱ったりドキュメントに基づく回答を生成する際に使われます。
from openai import OpenAI
import numpy as np
client = OpenAI()
# 1. ドキュメントをベクトル化
def get_embedding(text: str) -> list[float]:
response = client.embeddings.create(
model="text-embedding-3-small",
input=text
)
return response.data[0].embedding
# 2. コサイン類似度でドキュメントを検索
def cosine_similarity(a: list, b: list) -> float:
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# 3. 関連ドキュメントをコンテキストとして追加
def answer_with_rag(question: str, documents: list[dict]) -> str:
q_embedding = get_embedding(question)
# 関連度スコアを計算して上位3件を取得
scored_docs = [
(cosine_similarity(q_embedding, doc['embedding']), doc)
for doc in documents
]
top_docs = sorted(scored_docs, reverse=True)[:3]
context = "
".join([doc['content'] for _, doc in top_docs])
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": f"以下の情報を参考に回答してください:
{context}"
},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
コスト管理とベストプラクティス
- モデルの使い分け:単純なタスクはgpt-3.5-turbo、複雑な推論はgpt-4oを使う
- システムプロンプトの最適化:不要なトークンを削減してコスト削減
- キャッシュの活用:同じ質問への回答をRedisなどでキャッシュ
- 最大トークン数の制限:max_tokensで不意の大量生成を防ぐ
- 使用量の監視:OpenAI Dashboardで使用量を定期的に確認
まとめ
LLM APIを活用したアプリ開発は、ちょっとしたコードで驚くほど高度な機能を実装できます。まずは簡単な質問応答システムを作ってみて、徐々にRAG・エージェント・マルチモーダルへと発展させていきましょう。AIアプリ開発のスキルは、2026年のエンジニア市場で大きな差別化要因になります。