SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

GoogleColabでGeminiを使ってCSVを元データにした簡易RAGを試してみた

Google ColabでLangChainのドキュメントに従い、CSVファイルを元にしたRAGを実装してみたので、メモ。 ※実際は、SQLiteCSVデータを入れて、SQLでデータを読み出している

!pip install -qU langchain  langchain-community langchain-experimental pandas
!wget https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv -O titanic.csv
import pandas as pd

df = pd.read_csv("titanic.csv")

from langchain_community.utilities import SQLDatabase
from sqlalchemy import create_engine

engine = create_engine("sqlite:///titanic.db")

# SQLiteにデータを書き込む
df.to_sql("titanic", engine, index=False)


db = SQLDatabase(engine=engine)

from langchain_community.agent_toolkits import create_sql_agent
import os
from google.colab import userdata
os.environ["GOOGLE_API_KEY"] = userdata.get("GOOGLE_API_KEY")

from langchain_google_genai import ChatGoogleGenerativeAI
# LLMの準備
model  = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest", temperature=0.9)
agent_executor = create_sql_agent(model, db=db, agent_type="tool-calling", verbose=True)

agent_executor.invoke({"input": "生き残りやすかったのはどのような人?"})

参考ページ

python.langchain.com

2024年5月13日の週に気になった記事などまとめ

moment-timeseries-foundation-model/moment

github.com

karaage0703/code-cooker

github.com

  • SimpleなCode Intepreter

TSKaigi 2024 スライドまとめ【非公式】

zenn.dev

【LLM】1B帯の日本語事前学習モデルのベンチマークを測定する

zenn.dev

  • llm-jp-evalで測定した
  • Japanese Stable LM 2 1.6Bが多くの1B帯の事前学習モデルと比べて性能が良かった

これまでの検索と生成AI時代の検索

note.com

  • LLMの登場により、自分が知りたいことにパーソナライズして回答を得ることができるようになった

Googleが“一歩先の未来を予知”できる時系列予測AI基盤モデル「TimeFM」公開、LSTMの進化形「xLSTM」など重要論文5本を解説(生成AIウィークリー)

www.techno-edge.net

  • GoogleがTimeFM(Time Series Foundation Model)という時系列予測のための基盤モデルを開発した

OpenAI の Model Spec の概要

note.com

  • OpenAI APIおよびChatGPTでのモデルの望ましい動作を指定する文書]
  • メッセージの役割ごとの優先順位は、Platform > Developer > User > Tool
  • 開発者は、メッセージのどの部分をユーザーと共有できるか、どの部分を非公開にしておくべきかを指定することが推奨される

最近(2024年4月)公開された LLM を ELYZA-tasks-100 で性能評価してみた

qiita.com

  • Command-R-Plus, Llama-3, Phi-3 mini を ELYZA-tasks-100 で評価した記事
  • Command-R-Plus と Llama-3 70B の性能は既存モデルを大きく上回る

LLM評価の落とし穴~開発者目線で気をつけるポイント~

speakerdeck.com

  • JP LM Evaluation Harnessの落とし穴
    • プロンプトを変えるだけで正解率が変化
  • llm-jp-evalの落とし穴
    • ゼロショット設定では正しいフォーマットで回答するのが難しい場合もある
  • Japanese MT-benchの落とし穴
    • 冗長性や位置バイアスなど様々なバイアスが報告されている
  • Chatbot Arenaの落とし穴
    • フォーマットを整えることでユーザーの印象が良くなる
  • チューニングの落とし穴

Weekly AI Agents News!

speakerdeck.com

Introducing GPT-4o: OpenAI’s new flagship multimodal model now in preview on Azure

azure.microsoft.com

  • Azure OpenAI ServiceのプレイグラウンドでもGPT-4oを利用できる

Introducing GPT-4o and more tools to ChatGPT free users

https://openai.com/index/gpt-4o-and-more-tools-to-chatgpt-free/

  • GPT-4oを無料ユーザーにも公開する

OpenAI、次世代AIモデル「GPT-4o」を発表

zenn.dev

  • GPT-4oは音声・画像・テキストの統合処理ができる
  • 20言語でのト-クン効率改善・高速化

Hello GPT-4o

https://openai.com/index/hello-gpt-4o/

  • GPT-4oの紹介ページ

Agentic Design Patterns Part 1

www.deeplearning.ai

  • GPT-4、GPT-3.5のパフォーマンスを向上させるAIエージェント戦略

OpenAI 言語モデルで日本語を扱う際のトークン数推定指標

zenn.dev

高性能な日本語マルチモーダル基盤モデル「clip-japanese-base」を公開しました

techblog.lycorp.co.jp

  • Apache-2.0ライセンスで公開された
  • 以下でフィルタリングしたデータで学習した
    • CLIP-score filtering
    • SemDeDupを用いて重複除去
    • HojiCharを用いて有害なテキスト(アダルトワード、暴力的表現、差別的表現)を含むサンプルを除去

大規模言語モデル (LLM)における低精度数値表現

speakerdeck.com

GPT4oを使って、訓練無しで物体検出(BBox)ができるか試してみる

zenn.dev

  • bboc検出はある程度できるが、座標認識は大雑把でずれるときもある

AndroidGoogle AI の新機能まとめ

note.com

圧倒的な読書量を誇るからあげ氏が実践・読書との向き合い方

levtech.jp

  • 複数の人から勧められた本を選ぶと満足することが多い
  • 読書の時間は、継続的に少しずつでも確保することが大切
  • イマイチだと思ったら、途中で読むのをやめても良い

Gemini 1.5 Pro のアップデート ・ Gemini 1.5 Flash ・ PaliGemma ・ Gemma 2

note.com

LangChainのパートナーパッケージ langchain-huggingface の概要

note.com

PaliGemma の概要

note.com

  • 「PaliGemma」は、画像エンコーダーとしての「SigLIP-So400m」とテキスト デコーダーとしての「Gemma-2B」で構成されるアーキテクチャを備えたビジョン言語モデル
  • 画像に対してのキャプション」、画像に関する質問に答える、画像内のエンティティ検出ができる

2023年度 デジタル庁・行政における生成AIの適切な利活用に向けた技術検証を実施しました

www.digital.go.jp

  • 生成AIの適切な利活用に向けた技術検証の全体的な内容、具体的な生成AIへの入力文のサンプル、一部検証に用いたテストケースが公開された
  • 業務本来の目的からすると不適切である、という判断は実際に業務に携わっている担当者が注意深く判断すべき
  • 忙しい人がすぐに助かる状態で渡すことが重要
  • 「何を人間の代わりに読ませるか」にも注意を傾けることを推奨する
  • 一度きりしかない業務よりも何度も発生する業務の方が、生成AI活用の品質確認の手間に見合う傾向が高い

新入生向けチュートリアル:文献のサーベイv2

speakerdeck.com

  • Google Scholoarの引用数でその論文のインパクトを確認する
  • 速読の時はabstract + introduction + 図表 + conclusionをざっくり読む

「情報の取捨選択をするには、自分の価値関数を磨くしかない」年間2冊ペースで執筆する、布留川氏の情報収集ルーティー

logmi.jp

  • Xのキーワード検索を多用する
  • 技術記事はトップダウンで読む
  • デモを試さないと自分の価値関数を磨けない

神戸市さん、データ利活用しすぎ……またまたやってくれました! 無料で誰でも使える「統計ダッシュボード」拡充

神戸市さん、データ利活用しすぎ……またまたやってくれました! 無料で誰でも使える「統計ダッシュボード」拡充【地図と位置情報】 - INTERNET Watch

  • 住民基本台帳人口移動報告」に基づく統計ダッシュボードを公開
  • 神戸市だけでなく全国のデータを参照できる

生成AIユースケースを考え倒すためのGenerative AI Use Cases JP (GenU)の魅力と使い方

speakerdeck.com

  • Bedrockには実行ログの取得機能があり、コンソールから有効化するだけで使用開始できる
  • Generative AI Use Cases JP を使うと、様々なユースケースに対応したアプリを簡単にデプロイできる

ハルシネーションを大幅抑止し専門的な質問にも正確な回答が可能な生成AI ストックマーク 1,000億パラメータ規模の独自LLMを公開

stockmark.co.jp

  • フルスクラッチで開発された
  • 独自に収集したビジネスドメインの日本語データを中心に事前学習が行われた
  • 答えることが出来ない質問に対しては、無理に回答を生成するのではなく、しっかりと「分からない」と答えることが出来る

AIラジオ『zenncast』の技術構成(プロンプトつき)

zenn.dev

  • Jina Reader APIを使うとURLを入力するとLLMに最適な形で内容を取得できる
  • スクリプト作成時には構成、制約、今日の日付、前回紹介した記事、お便り、今回紹介する内容を渡している

【風吹けば名無し】GPT-4o が獲得した日本語の語彙を調べる

zenn.dev

  • cl100k_baseとo200k_baseを比較し、GPT-4oが新たに獲得した日本語語彙を確認した記事

OpenAI Spring Update v.s. Google I/O 2024

note.com

  • GPT-4oで発言中に割り込むことが可能になった
  • 長い文章や動画・音声のコンテキストを要するタスクはGeminiのほうが適している

生成AI Topic|OpenAI Spring Update と Google I/O 2024 に関するサマリー解説

note.com

[05/11~05/17] 生成AI Weekly News

note.com

LLM に表データを読み解かせたかったので、ちょっと試してみた

developers.cyberagent.co.jp

  • PaLM 2の場合、プロンプト内で表をPIPE形式で与えると、最も性能が良かった
  • 元論文

高効率のLLM学習手法ReFTを試してみる

www.ai-shift.co.jp

  • ReFTはモデルの中間層の出力に介入する

LangChain のユースケース

note.com

【2024年版】WSL2+Ubuntu24.04+Docker+GPUでつくる機械学習環境

zenn.dev

  • CUDAは各コンテナ内のCUDA Toolkitを用いて利用する

LangChain v0.1 から v0.2 への移行手順

note.com

  • 新しいimportへの移行ツールへの移行ツールが公開されている

大規模言語モデル研究の最近の潮流(?)と実験研究への展開可能性について

www.docswell.com

  • AIが得意なタスクを探して活用するべき
  • 丁寧な実験記録と根気強い観察などに強みがある

LangChain v0.2 で エージェントを構築

note.com

LangChain v0.2 で RAGを構築

note.com

LangChain v0.2 で チャットボットを構築

note.com

  • RunnableWithMessageHistoryでLLMをラップすることで、モデルの入出力が追跡され、それらが会話履歴の保存場所に保存さえる
  • 会話履歴付きLLMの場合、configurable に session_id を含める必要がある

LangChain v0.2 で 単純なLLMアプリケーションを構築

note.com

速度・出力量・コスト効率最強の、Gemini 1.5 Flash

zenn.dev

TOYOTA×NISSAN×Honda】Japan Mobility Tech Day “zero” ~ソフトウェアエンジニアにとって、自動車業界が"今"最高にアツい理由(ワケ) ~

www.youtube.com

GPT-4oを使って2Dの図面から3DのCADモデルを作る

zenn.dev

人間とAIの協働

www.youtube.com

2024年5月6日の週に気になった記事などまとめ

GPUなサービスをそこそこな費用で運営する

torpid-stem-c48.notion.site

基本に立ち戻る:LLMのプロンプト

nikkie-ftnext.hatenablog.com

LLMをWebフレームワークにしたら、未来が見えた #2024

zenn.dev

  • 以下2つのアプローチを試している
    • APIの呼び出し毎に状態の変化を記録させ、それを全部プロンプトに突っ込むアプローチ
    • ToolアプローチでSQLの実行もできるようにしたアプローチ
      • llama3 8bで実装

次世代Web認証「パスキー」

speakerdeck.com

LLM にプロンプトチューニングをしていただく手法まとめ

zenn.dev

  • DSPy Optimizersは、プロンプトに対してたくさんのInput/Output Example集と自動評価関数を作り、評価が最も高くなるようなFew showの組み合わせを探す

LLMプロダクト開発における独自評価基準とデータセットの作り方の考察

zenn.dev

  • アウトプット例があったほうが具体的なイメージのすり合わせなどに利用できる
  • プロダクト要件はポジティブな要求とネガティブな要求に分かれる
  • LLM Appsの評価についての参考文献が多数記載されているなど非常に参考になる

Weekly AI Agents News!

speakerdeck.com

LLMによるLLMの評価とその評価の評価について

zenn.dev

Difyをローカルで動かしてRAGまで試してみる

zenn.dev

SQL滅ぶべし

www.docswell.com

Common Crawlから作る大規模日本語コーパスとその前処理(Mixtral 8x7Bを語彙拡張継続事前学習 Part2)

tech-blog.abeja.asia

karakuri-ai/karakuri-lm-8x7b-chat-v0.1

huggingface.co

OpenAIのBatch APIを使ってお得にプロンプトを一括処理してみる

acro-engineer.hatenablog.com

Sakana.aiが公開した「Evolutionary Model Merge」手法を「mergekit」で実施してみる

acro-engineer.hatenablog.com

Google Cloud Next'24 にて Google Cloudの生成 AI エコシステムはなぜ良いのか?について発表しました

note.com

  • シンプルなSQLでBigQueryに保存されているメタデータを使って、生成AIを使える
  • BigQuery内でほぼパイプラインが完結する

Build generative AI applications with Amazon Bedrock Studio (preview)

aws.amazon.com

  • Bedrock Studioでアプリケーションを作成すると、ナレッジベース、エージェント、ガードレールなどに対応した管理リソースがAWSアカウントに自動的にデプロイされる

LLM時代のX情報収集術

note.com

Google Colab で 属性予測モデル KARAKURI LM 7B APM v0.1 を試す

note.com

  • helpsteer、oasstの属性予測できる

噂のノーコードAIシステム開発環境Difyを使ってツールを作ってみた。使った感想

note.com

「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用

speakerdeck.com

  • LLMは従来のプログラムでは細かすぎて作りこみ切れない文書処理に対応できる
  • LLMを活用すると「ニッチ」な領域でもDXを実現できる

Introducing the Model Spec

https://openai.com/index/introducing-the-model-spec/

  • OpenAIが望ましいモデルの動作を形成するためのアプローチとトレードオフをどのように評価しているかを示した文書を公開した

実務につなげる数理最適化

blog.recruit.co.jp

  • 最適化問題の定式化に必要な情報の多くは、日常的に特定の業務に従事している現場担当者にとって改めて話題にするまでもない常識
    • 優秀なコンサルタントが慎重なインタビューを重ねてもこれらの情報を引き出すことはなお困難

【論文紹介】複数トークン予測によるLLMの精度向上と高速化

note.com

日本語大規模言語モデル「Japanese Stable LM 2 1.6B」をリリースしました

ja.stability.ai

  • 16億パラメータという小型モデルでありながら、40億パラメータ以下のモデルのスコアよりも高いスコアを達成し、70億パラメータのモデルに近いスコアを獲得

GoogleColobでstabilityai/japanese-stablelm-2-instruct-1_6bを動かす

ayousanz.hatenadiary.jp

生成AIの力を借りて、爆速でChatGPTアプリを開発する

qiita.com

  • Azure Static We Appsで動かすアプリを生成AIで作成した記事

learn.microsoft.com

Assistants APIが画像認識に対応した

https://platform.openai.com/docs/assistants/how-it-works/how-it-works/creating-image-input-content

ノーコードLLM統合アプリのdifyでollamaと連携してみた

qiita.com

LLMを用いた合成データ作成事例をまとめてみたーNLP2024参加報告①

note.com

[05/03~05/10] 生成AI Weekly News

note.com

生成AI・LLMを用いて「あなた」にパーソナライズされたUIの実現を目指す「生成UI」の可能性

note.com

  • 生成UIとは、ユーザーのニーズやコンテキスト、行動履歴やプロファイルに合わせて、動的にインタフェースを生成するもの

Anthropic Consoleのプロンプトジェネレータの活用マニュアル|誰でも簡単にプロンプト生成ができる

note.com

LangChain v0.2 の概要

note.com

ローカルLLMはこーやって使うの💢

gist.github.com

  • 特殊トークンによるプロンプトインジェクション、尤度関数としての利用などが追加された

Microsoft 365 界隈のコミュニティの整理

office365labo.com

Getting Started with Mistral

www.deeplearning.ai

  • DeepLearning.AIのMistralのコース。
  • プロンプトエンジニアリング、Fucntion Calling、JSONモード、RAGなどが学べる

生成AIの論点

https://www.seikyusha.co.jp/bd/isbn/9784787235374/

jphrase 0.0.1

pypi.org

  • 日本語のテキストを文節に分割するライブラリ

言語モデルの編集に関する論文紹介

note.com

『生成AIカンファレンス2024』に現地参加したイベントレポート

note.com

データ基盤を支える技術

speakerdeck.com

実務で生成AIサービスを開発してわかったこと

zenn.dev

Google Colab上でollamaでGPUを活用してc4ai-command-r-plus-ggufを動かしてみた

Google Colab上でollamaでGPUを活用してc4ai-command-r-plus-ggufを動かしてみたので、メモ。

※A100とL4で動作することを確認

まずは、ollamaをインストール

!curl https://ollama.ai/install.sh | sh

!echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
!sudo apt-get update && sudo apt-get install -y cuda-drivers

import os

# Set LD_LIBRARY_PATH so the system NVIDIA library
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})

ollama run で用意されたモデルを動かすとエラーになるので、ggufからカスタムモデルを作る。 利用するカスタムモデルをダウンロード

!wget https://huggingface.co/<利用したいモデルのパス>

カスタムモデルを作成するための、modelファイルを作成。

テキストエディタなどで作成したファイルをアップロードしてもOK。

ストップトークンを設定しないと、発話が終わらないので注意

# ファイルパス
_filepath = './Modelfile'

# ファイルに書き込む内容
filecontents = """
FROM ./<ダウンロードしたファイルの名前>

TEMPLATE \"\"\"{{ if .System }}<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>{{ .System }}<|END_OF_TURN_TOKEN|>{{ end }}{{ if .Prompt }}<|START_OF_TURN_TOKEN|><|USER_TOKEN|>{{ .Prompt }}<|END_OF_TURN_TOKEN|>{{ end }}<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>{{ .Response }}<|END_OF_TURN_TOKEN|> \"\"\"

PARAMETER stop "<|START_OF_TURN_TOKEN|>"
PARAMETER stop "<|END_OF_TURN_TOKEN|>"

"""

# 書き込みモード
with open(_filepath, 'w') as f:
  # ファイル作成、書き込み
  f.write(filecontents)

以下のコマンドを実行し、カスタムモデルを作成

!nohup ollama serve &
!ollama create <カスタムモデルの名前> -f Modelfile

pythonからollamaを使うためにpip install

!pip install ollama

プログラムから利用

import ollama

response = ollama.chat(model='<カスタムモデルの名前>', messages=[
  {
    'role': 'user',
    'content': 'こんにちは',
  },
])
print(response['message']['content'])

参考にしたページ

カスタムモデルの作り方は以下を参考にした github.com

Modelファイルのテンプレート、パラメータは以下を参考にした ollama.com

Google Colabへのollamaのインストールは以下の記事を参考にさせていただきました qiita.com

2024年4月29日の週に気になった記事などまとめ

Arxiv RAGによる論文サーベイの自動生成

blog.shikoan.com

  • Arxivの検索APIとLLMを統合し、作成した論文サーベイの自動生成ツールを紹介する記事
  • Embeddingに対して巡回セールスマン問題を解いてソートかける

mergekit-evolve のパラメータまとめ

note.com

  • 「mergekit-evolve」は、進化的アルゴリズム (CMA-ES) を使用して、モデル メトリックに対してマージのパラメータを最適化するスクリプト

Best Practices and Lessons Learned on Synthetic Data for Language Models

arxiv.org

複数の企業でデータエンジニアとして求められたスキル

www.yasuhisay.info

  • セキュリティや法令に関する知識を持って置き、必要に応じて専門家に相談できる知識を持っておく

Continual Pre-Training for Cross-Lingual LLM Adaptation: Enhancing Japanese Language Capabilities

arxiv.org

  • Swallowの継続事前学習の論文

大規模言語モデル「LLM-jp-13B v2.0」を構築~NII主宰LLM勉強会(LLM-jp)が「LLM-jp-13B」の 後続モデルとその構築に使用した全リソースを公開~

www.nii.ac.jp

ローカルLLMを手軽に楽しむ

zenn.dev

  • OllamaとOpen WebUIを使ってローカルLLMを簡単に動かす方法を紹介した記事

謎の高性能AIモデル「gpt2-chatbot」がChatbot Arenaに登場、GPT-4.5かGPT-5なのではないかと話題に

gigazine.net

iOSAndroid の ローカルLLM実行環境まとめ

note.com

Cohere の Command R/R+ において 128k input tokens は短いのか長いのか

qiita.com

  • Claudeよりもトークン数を節約できる

mistralモデルをベースとした 日本語の大規模言語モデル

www.docswell.com

  • 事前学習用のコーパスクリーニングツールをC++で作成した

rinnaのllama-3-youko-8bを試す。

note.com

Raspberry Pi(ラズパイ)のローカル環境でLLMを動かす

zenn.dev

  • ラズパイ5でollamaを使ってLLMを動かした記事

KAN: Kolmogorov-Arnold Networks

arxiv.org

  • MLPの代替手段としてKANを提案した論文

Spiral.AI、Transformerの限界を克服した次世代LLMアーキテクチャ「RetNet」の学習済みモデルを公開

prtimes.jp

  • 30億パラメータ級のモデルを公開した
  • 公開されたのはベースモデル

Announcing the General Availability of GPT-4 Turbo with Vision on Azure OpenAI Service

techcommunity.microsoft.com

  • Azure OpenAI Serviceで「gpt-4-turbo-2024-04-09」を利用可能となった
  • Vision Enhancements機能はまだ利用できない
  • 画像入力でのJSONモードやFunction Callingは数週間後から利用可能となる

Langfuse

langfuse.com

  • OSS版のLangSmithのようなソフトウェア
  • Dockerを活用したセルフホストもできる

RAGの評価:評価の必要性と問題点

tech.beatrust.com

  • GPT4はタスク内での相対的な評価が苦手

RAGの評価:Ragasの有用性の評価

tech.beatrust.com

  • Regasは英語のデータのほうが評価能力が高い
  • e2eではLangChainのCorrectnessよりも、Regasのほうが相関係数が高かった
  • text-embedding-ada-002ではどんなに似てなくても0.6までしかコサイン類似度が下がらない

[04/27~05/02] 生成AI Weekly News

note.com

GAIA-1: 自動運転のための世界モデルを理解する

zenn.dev

  • GAIA-1は動画やテキスト、アクションに関する情報を元に未来のリアルな動画を生成できる
    • 動画の途中からその続きを生成できる

過学習(過剰適合)のはなし

tjo.hatenablog.com

  • 過学習とは統計的学習モデルをデータに対して当てはめる際に真のシグナルどころかノイズにまで当てはまってしまい、かえってモデルの予測精度が低下すること

専門性の高いデータの読み解きをLLMでスケールさせよう

developers.cyberagent.co.jp

  • 以下の3パートにプロンプト上でタスクを分解し実現する
    • 表形式のデータを言語化する
      • JSONデータを言語に起こす
    • 言語化されたデータを専門性に基づいて読み解き、データが示す意味を言語化した文章の集合とする
      • 専門知識の埋め込みは、プロンプトやone-shotなど様々な方法がある
    • 読み解かれたデータの解釈

NeurIPS-23 参加報告 + DPO 解説

speakerdeck.com

Agents for Amazon Bedrock で Webサイトにチャットボット機能を足してみる

zenn.dev

  • Agents for Amazon Bedrockを使って簡単にwebサイトを構築した記事
  • Agentに知識を追加するためにKnowledge Baseを利用した

Amazon Kendra と Amazon Bedrock で構成した RAG システムに対する Advanced RAG 手法の精度寄与検証

aws.amazon.com

  • Claude3 Haikuを利用してクエリ拡張した
  • 取得した検索結果がユーザーからの質問に関連しているかをClaude3 Haikuで確認した
  • クエリ拡張は回答の質向上に貢献した

Tavily APIの精度を上げるコツ

zenn.dev

-search_depthでフォローアップクエスチョンが表示される

CloudGoat

github.com

  • CTF形式のシナリオで学習に利用できる脆弱なAWS導入ツール

Dify の ワークフロー の概要

note.com

  • ChatflowとWorkflowで同じノードでも違いがある

ローカルLLMはこーやって使うの💢

gist.github.com

  • ローカルLLMだから可能な言語モデルの機能を紹介するGoogle Colabのノートブック

Gemini APIでLangGraphのチュートリアルをGoogle Colabでやってみた

LangGraphのチュートリアルをGemini APIで実行してみたので、メモ

事前準備

実行したコード

! pip install langgraph langchain==0.1.9 langchain-google-genai pillow

まずはツールなしのシンプルなグラフ作成

# 環境変数の準備 (左端の鍵アイコンでGOOGLE_API_KEYを設定)
import os
from google.colab import userdata
os.environ["GOOGLE_API_KEY"] = userdata.get("GOOGLE_API_KEY")

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage
from langgraph.graph import END, MessageGraph



# 利用するモデルをGeminiに変更
model  = ChatGoogleGenerativeAI(model="gemini-pro", temperature=0.9)
# model  = ChatGoogleGenerativeAI(model="gemini-1.5-pro-latest", temperature=0.9) # Gemini1.5を使いたい場合はこちら


graph = MessageGraph()

graph.add_node("oracle", model)
graph.add_edge("oracle", END)

graph.set_entry_point("oracle")

runnable = graph.compile()

作成したグラフの実行

runnable.invoke(HumanMessage("What is 1 + 1?"))

必要な場合にmultiplyを呼び出す例

import json
from langchain_core.messages import ToolMessage,BaseMessage
from langchain_core.tools import tool

# チュートリアルにはなかったが追加
from typing import List

@tool
def multiply(first_number: int, second_number: int) -> int:
    """Multiplies two numbers together."""
    return first_number * second_number



# Geminiを利用するように変更
model  = ChatGoogleGenerativeAI(model="gemini-pro", temperature=0.9)
# model  = ChatGoogleGenerativeAI(model="gemini-1.5-pro-latest", temperature=0.9) # Gemini1.5を使いたい場合はこちら

# https://python.langchain.com/docs/modules/model_io/chat/function_calling/のGoogleの例を参考に変更
model_with_tools = model.bind_tools([multiply])

graph = MessageGraph()

def invoke_model(state: List[BaseMessage]):
    return model_with_tools.invoke(state)

graph.add_node("oracle", invoke_model)

def invoke_tool(state: List[BaseMessage]):
    # idが含まれるのがadditional_kwargsではなく、tool_callsだったので変更
    tool_calls = state[-1].tool_calls
    multiply_call = None

    for tool_call in tool_calls:
        # tool_callsの形式に合わせて変更
        if tool_call.get("name") == "multiply":
            multiply_call = tool_call

    if multiply_call is None:
        raise Exception("No adder input found.")

    res = multiply.invoke(
        # 引数名をあわせる
        multiply_call.get("args")
    )
    return ToolMessage(
        tool_call_id=multiply_call["id"],
        content=res
    )

graph.add_node("multiply", invoke_tool)

graph.add_edge("multiply", END)

graph.set_entry_point("oracle")

LLMがツール呼び出しをするように指示した場合のみ、ツール呼び出しするように修正

def router(state: List[BaseMessage]):
    # ここもtool_callsに変更
    tool_calls = state[-1].tool_calls
    if len(tool_calls):
        return "multiply"
    else:
        return "end"

graph.add_conditional_edges("oracle", router, {
    "multiply": "multiply",
    "end": END,
})

グラフをコンパイルし、実行

runnable = graph.compile()

runnable.invoke(HumanMessage("What is 123 * 456?"))

参考

python.langchain.com

python.langchain.com

note.com

メモ

以下の記事を読む限りだと、bind_toolsを使った場合にtool_callsを使うこと自体はおかしくなさそう blog.langchain.dev

2024年4月22日の週に気になった記事などまとめ

Kaggle LLM Prompt Recoveryコンペまとめ

zenn.dev

  • 元のテキストと書き換え後のテキストから書き換えに利用したプロンプトを予測するコンペについてまとめた記事
  • アプローチはLLMベースのアプローチとmean promptのアプローチがあった

合成データを利用したLLMの開発

note.com

  • 合成データに関するベストプラクティスの論文とStanford Alpacaについて説明した記事

LLM校正CIを自社のブログに導入してみた

engineers.ntt.com

  • テキストの誤りがないかを確認するために、LLMで校正した記事
  • 指摘すうが多いと確認が大変なので、RecallよりもPrecisionを重視した

【Bedrock×Lambda】高精度なハイブリッド検索RAGをサーバレスで実装(Slack連携も可)

qiita.com

  • ドキュメントをキーワード検索した後にベクトル検索している

Keras 3.0とJAXを使ったgemmaのファインチューニング

hamaruki.com

  • Keras 3.0はJAX、TensorFlow、PyTorchのいずれかをバックエンドとして選択できる

オリジナルデータセットで Idefics2 のファインチューニングを試す

note.com

  • 画像と質問と回答の学習用データセットを作成する

SAMMO: A general-purpose framework for prompt optimization

www.microsoft.com

  • 様々なタイプの構造情報を組み合わせたプロンプトの最適化を合理化するオープンソースツール

Anthropic Cookbook のおすすめレシピ

speakerdeck.com

複数の関連度から検索可能な BGE M3-Embedding の紹介

tech.algomatic.jp

  • 100以上の言語を検索の対象とする
  • 密、疎、マルチベクターなどの異なる検索手法を同時に実現する
  • 異なるトークン長の文章を処理する

GEAR: Augmenting Language Models with Generalizable and Efficient Tool Resolution

arxiv.org

  • 小規模言語モデルですべてのツールを試し、良さそうなものをLLMに渡す

microsoft/LLMLingua

github.com

  • 言語モデルを利用して、プロンプトを圧縮するライブラリ

Weekly AI Agents News!

speakerdeck.com

  • ChatShop
    • エージェントが対話を通じてユーザーの好みを探り、情報を徐々に蓄積することで意思決定するタスクを提案
  • Graph Chain-of-Thought
    • LLMがグラフのノードを移動し、必要な情報を段階的に収集することを可能にする
  • ResearchAgent
    • 論文を元に問題点の特定、方法論の開発、実験デザインの提案を自動で行う
    • 査読エージェントのレビューで生成したアイデアを反復的に改良する

来てくれClaude 3! Agents for Amazon Bedrockのモデル比較或いはチューニングの話

speakerdeck.com

  • エージェント作成時詳細プロンプトというエージェント作成時に用意されるプロンプトテンプレートセットを設定できる

RAGにおいて取得された情報と事前知識が矛盾しても、情報に説得力があるときLLMは受け入れる

ai-data-base.com

  • LLMが持つ知識と矛盾していても、外部知識同士に矛盾がない場合は、LLMは受け入れる論文の紹介

Helper metaprompt (experimental)

docs.anthropic.com

  • Claudeで効果的にタスクを実行するためのプロンプトを生成するメタプロンプトが用意されている

Mistral AIの3つオープンソースモデルの日本語性能を確認してみる

note.com

  • 以下のモデルの日本語性能を確認した記事
    • Mistral 7B
    • Mixtral 8x7B
    • Mixtral 8x22B
  • Mixtral 8x22Bモデルが比較的に自然な日本語で回答を行うことができ、内容も一貫性があった

Phi-3 Technical Report: A Highly Capable Language Model Locally on Your Phone

arxiv.org

  • 38億のパラメータでありながら、Mixtral 8×7BやGPT-3.5に匹敵するphi-3-miniを提案した論文

羊の皮を被ったGPT:カスタマイズされたGPTのリスク

scrapbox.io

  • GPTsが悪用され、ユーザーのプライシーやセキュリティにリスクをもたらすことがある
  • GPTsとのチャットは構築者に送信させることができる

RAG from Scratch

www.youtube.com

  • LangChainが出しているRAGについて学ぶことができるYoutubeプレイリスト

『因果推論』(金本拓:オーム社)は因果推論に留まらず現代的なマーケティング分析手法まで網羅したバイブル

tjo.hatenablog.com

Anthropic Keynote Session in JAWS Bedrock Claude Night on 2024/4/22

www.youtube.com

llama.cpp による transformersモデル の量子化

note.com

  • Llama.cppはインストール時に環境に合わせてソースからビルドして利用する

Import custom models in Amazon Bedrock (preview)

aws.amazon.com

  • AWS Bedrockでファインチューニングしたカスタム重みをインポートし、オンデマンド料金ですることができるようになった

Introducing more enterprise-grade features for API customers

openai.com

  • OpenAIのAPIにAzureのPrivate Linkで接続できるようになった

Google Colab で Phi-3 を試す

note.com

LEIA: 言語間転移学習でLLMを賢くする新しい方法

zenn.dev

  • 大規模言語モデル(LLM)の性能を向上させる新しい方法であるLEIAを紹介した記事
  • LEIAはWikipediaのエンティティを使ってデータ拡張したWikipediaテキストを使ってLLMを訓練することで言語間転移の促進を行う方法

The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions

arxiv.org

  • 異なる優先順位の命令が競合する場合にモデルがどのように動作するかを明示的に定義する命令階層を提案する論文

言語モデルを高位合成でFPGAに実装してみた

zenn.dev

  • 中規模FPGAの上でHLSを活用して言語モデルを動作させた記事
  • DRAMにモデルを格納し、必要に応じてウェイトを取り出す実装

mergekit-evolve による 進化的モデルマージ

note.com

  • 「mergekit」で「進化的モデルマージ」を利用できる
  • 7Bモデルの場合は、24GBのVRAMで十分
  • マージでの一般的な問題の1つは、結果が特定のプロンプト書式に準拠しないことがよくあること

LLMの継続学習における論文紹介[Cohere論文紹介No.1]

note.com

  • ドメインを類似度順で継続学習させたほうがドメイン特化させやすい
  • ドメインをランダムな順序で継続学習したほうがLLMの性能・知識の蓄積が改善する

LLMの学習データの刈り込みに関する論文紹介[Cohere論文紹介No.2]

note.com

  • LLMのデータを刈り込むことでLLMの性能を上げられることを明らかにした
  • Perplexityを用いた刈り込みが最も効果的だった

Command R+はトークナイザーもすごかった

qiita.com

  • Command R+は日本語で学習したモデルよりも日本語をトークン化したときのトークン数を削減できている

Kotoba-Whisper入門 – 日本語音声認識の新しい選択肢

hamaruki.com

  • Kotoba-Whisperは、OpenAIのWhisper large-v3をティーチャーモデルとし、ReazonSpeechの大規模な日本語音声データを用いて学習された
  • Whisper-large-v3の6.3倍の速度で同等のエラー率
  • return_timestamps=Trueを指定するとセグメントレベルのタイムスタンプが付与される
  • チャンク処理アルゴリズムを使用すると、逐次処理の約9倍で処理できるが、若干精度が落ちる
  • プロンプトを与えることで、文字起こしの内容をある程度コントロールできる

「シリコンの群衆」LLM集団(12体)は人間にどれほど近づくか

ai-data-base.com

  • 12体のLLMを使用し、人間集団の予測と比較する実験を行った論文を紹介する記事

AppleiPhoneでも稼働するオープンな言語モデル「OpenELM」を公開

www.itmedia.co.jp

  • 小さいものから、2億7000万、4億5000万、11億、30億のモデルを公開した
  • 利用する開発者は自分で「十分なセーフティテストを実施し、適切なフィルタリング機構を実装することが不可欠」

サイコロを振り直す:ABテストにおける共変量バランス調整の検討①

developers.cyberagent.co.jp

  • ABテストの偽陽性を小さくできるように実験設定に手を加える方法を考えた記事
  • アウトカムに影響を与える共変量すべてで層化抽出を行うことが難しい場合は、再ランダム化する

ICLR2024 LLMエージェントの研究動向

speakerdeck.com

  • Can Large Language Models be Good Path Planners?
    • グリッド環境で障害物を避けながら目標地点にナビゲートする経路計画で、LLMの空間的・時間的推論能力の限界を評価
  • Agent Lumos
    • オープンソースなモデルを使い、タスクをサブタスクに分割する機能、サブタスクの実行計画を立てる機能を別モジュールとして微調整する手法の提案
  • AUTOACT
    • タスクの詳細と津ウールから軌跡データを人工的に作成し、計画、行動、振り返りなどの役割ごとにエージェントを学習させる手法の提案
  • TaskBench
    • タスク分解、ツール呼び出し、ツールパラメータ生成能力を評価するベンチマーク

      5年後、生成AIでエンジニアの仕事はどう変わるのか? メルカリ、LayerX、Algomaticの3社が語るAIへの取り組み

codezine.jp

コスト削減は「そこに関わる誰かがやる」だけでいいのか?経営にも響くからこそ“お祭りムードで総力戦”を

logmi.jp

LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム

speakerdeck.com

  • Tracing
    • 1連の会話を「Thread」としてまとめて可視化する機能もある
  • Developerならば無料で使うことができる
  • Hub
    • LangSmith上でプロンプトを管理できる機能

Python開発環境基礎

ftnext.github.io

  • 仮想環境のpythonを指定して、pip installすると仮想環境を有効にしなくても、仮想環境にインストールできる
  • pipxインストールしてコマンドで使うライブラリを仮想環境にインストールする

Make Your LLM Fully Utilize the Context

arxiv.org

  • 長いコンテキストウィンドウの様々な位置から情報を取得する方法を提案した論文

AI事業者ガイドライン(第1.0版)の公表と今後の実務対応(2024年4月26日号 )

www.nishimura.com

  • チェックリスト及び具体的なアプローチ検討のためのワークシートが公表されている

はじめての「相関と因果とエビデンス」入門:“動機づけられた推論” に抗うために

speakerdeck.com

  • 選抜されたデータからランダムサンプリングしても疑似相関は消えない
  • 統計的因果推論はなんらかの統計的な工夫により比較する群間での背景のありようをそろえる試み

ファインチューニングの終焉:全ては継続的な事前学習

sc-bakushu.hatenablog.com

AnthropicAI Tool で Retrieval-Augmented Generation を実装してみた

zenn.dev

  • Google Custom Search Engine のAPIのツールを利用するclaude-3-opus-20240229のコードを紹介する記事

[04/20~04/26] 生成AI Weekly News

note.com

基本概念から理解するAzure AI Search - Azure OpenAI Serviceとの連携まで

tech.dentsusoken.com

  • 全文検索とベクトル検査のリランキングする方法にRRF使う
  • Azure AI SearchからAzuer OpenAI Serviceリソースに連携するインデクサーではチャンクに含まれる最大文字列長が2,000、オーバーラップが100
  • on your Dataの場合のインデクサーは、スキーマの項目がAI Searchから作った場合よりも多少多い
    • カスタムWebAPIスキルが利用される

表とテキストを両方含むドキュメントからLLMで上手に情報抽出を行う手法

ai-data-base.com

Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey

arxiv.org

JAXとWandbとSelf-Consistencyを使ったGemma Instruct 2Bモデルのファインチューニング入門

hamaruki.com

【随時更新】主要な大規模言語モデル比較表

zenn.dev

Google Colab で mergekit-evolve による 進化的モデルマージ を試す

note.com

Gemini API の Function Calling を試す

note.com

  • Automatic Function Callingでは、Functionの呼び出しが自動で行われ、関数のレスポンスを元に回答を生成する

財務分析・株価予測・稟議書作成…AIプロフェッショナル組織のリーダーが語る、生成AI活用法

logmi.jp