ChatGPT Agentでアプリを作ってみる 2025/07/18にOpenAIがChatGPT Agentを発表しました。ChatGPT Agentはウェブサイトと対話しながら情報を収集・分析するタイプのエージェントです。OpenAI側で仮想デスクトップが提供され、その中でユーザの指示に基づいた操作が行われます。Operatorという名前で提供されていた機能の進化版という感じです。
PandasのDataFrameに対して、OpenAI APIを利用した処理を並列で呼び出す方法 PandasのDataFrameに対して、OpenAI APIを利用した処理を並列で呼び出す方法を調べてみました。結論としては、pandarallelを使うのが最も簡単だろうという感じです。
from pandarallel import pandarallel pandarallel.initialize() summary_df["summary"] = summary_df["url"].parallel_apply(get_summary) display(summary_df) 前提条件 openai==1.16.2 pandarallel==1.6.5 事前準備 from __future__ import annotations import openai import urllib import pandas as pd urls = [ "https://www.inoue-kobo.com/llm/openai-reduce-embedding-dim/", "https://www.inoue-kobo.com/aws/selenium-serverless/", "https://www.inoue-kobo.com/aws/aws-service-summary/", "https://www.inoue-kobo.com/ai_ml/duckduckgo-langchain-langsmith/", "https://www.inoue-kobo.com/ai_ml/llamaindex-pdf-gradio/", ] summary_df = pd.DataFrame(urls, columns=["url"]) pd.set_option("display.max_colwidth", None) 単純に apply するだけ def get_summary(url: str) -> str | None: res_web = urllib.request.urlopen(url) # type: ignore content = res_web.read().decode("utf-8") res_openai = openai.chat.completions.create( model="gpt-3.5-turbo", temperature=0, messages=[ { "role": "system", "content": "以下はWebサイトの内容です。HTMLタグを削除した上で、150文字以内で要約してください。", }, {"role": "user", "content": content}, ], ) return res_openai.choices[0].message.content summary_df["summary"] = summary_df["url"].apply(get_summary) display(summary_df) 実行時間は12.3sでした。applyしただけでは並列処理は行われないため、この処理時間が基準になります。
OpenAI API Embeddings の dim 指定の実装方法を確認した OpenAI API として新しくリリースされたベクトル表現取得用モデルである text-embedding-3 では、出力の次元数を指定できるようになりました。どうやってるのかな?と気になったので、実装方法を確認してみました。結論から言うと、以下の公式ドキュメントに書いてある実装方法のショートカットでした(その旨がドキュメントに書いてあります)。
LangChain Evaluation の String Evaluators のまとめ LangChain Evaluation の String Evaluators について、提供されている EvaluatorType の挙動を一通り確認してみました。
Amazon BedrockをLangChainから使う場合の簡単なサンプル Amazon BedrockをLangChainから使う場合の簡単なサンプルです。OpenAI API経由でGPT-3.5/4、Bedrock経由でAnthropic Claude2を呼び出します。現在のLangChain(0.0.323)限定かもしれませんが、OpenAIとBedrockを呼び分ける際に、返されるインスタンスの型が異なるという注意点があります。
OpenAI API で質問応答する Discord Bot をサーバーレスで実装する OpenAI API で質問応答する Discord Bot を AWS AppRunner で実装してみました。具体的なコードは GitHub で公開しています。Bot への質問はスラッシュコマンドで行います。
API Key不要!OpenAI Function Callingにより検索エンジンであるDuckDuckGoとLangChainで、最新情報を参照する質問応答ボットを作る方法 LangChain の Agent の機能を利用することで、検索エンジンで最新の情報を検索しながら、対話型モデルによる質問応答の仕組みを作ることが簡単にできます。ただ、Google 検索の API を利用するためには、API Key の発行など、少し準備に手間がかかります(SerpAPI も同様)。そこで、DuckDuckGo を検索エンジンとして利用する方法を試してみました。DuckDuckGo であれば API 経由での呼び出しでも事前の登録や API Key の発行が不要です。
Gradio と LangChain でレスポンスがストリーミング出力される Chatbot を作る Gradio と LangChain を使うことで簡単に ChatGPT Clone を作ることができますが、レスポンスをストリーミング出力する実装サンプルがあまり見られなかったので、参考文献のコードを参考に、色々寄せて集めて見ました。同時リクエストがあった場合の挙動を確認していないため、あくまでお一人様用ということになります。
LangChain 0.0.200 での履歴を持った Chat、シンプルな Agent、長文の要約などの実装サンプル TL;DR LangChain は進化が早いということもあり、頻繁にインターフェイスが変更になります。この記事は0.0.200の時点での以下のタスクに対する実装サンプルです。
ローカルに保存した英語の PDF に日本語で質問応答する Gradio でのデモンストレーション TL;DR ローカルに保存した英語の PDF に対して日本語で質問応答する Web アプリケーションのデモンストレーションです。事前に Index 作成した上で、質問応答するための画面を Gradio で作成しています。