うさラボ

お勉強と備忘録

Ansibleにプルリクチャレンジをして得た知見

この記事はAnsible Advent Calendar 2025 16日目の記事です。 qiita.com はじめに この記事は日頃Ansibleを利用しているしがない男がプルリクエストというちょっと高いハードルに挑戦した時(挑戦中)の記録です。 同じように「いつかOSSに貢献してみたい」と…

Strands Agentsでバグ調査エージェントを作ってみた

概要 CSVに溜めたバグ一覧を、ワーカー複数で並列に読ませてザッと調査するエージェントを作成してみました。 最後にアグリゲーターが結果をMarkdownでまとめてレポートを出力します。 やったことはシンプルで、「分割→並列→集約→レポート」です。 今回はStr…

LangGraph入門 ②MCPのtoolsを組み込んだエージェントを作る

MCPのtoolsを組み込んだエージェントを作る

LangGraph入門 ①簡単なエージェントを作る

LangGraphについて勉強したので、 `LangGraph`+`LangChain`で簡単な内省型エージェントを作成してみました。

ansible-navigatorでstep実行する際に必要なオプション

概要 ansible-navigatorでPlaybookを実行する際、デフォルトで起動すると、ユーザからのインプットを受け取ることができず停止し続けてしまいます。 オプションで回避することが可能なので紹介します。 環境 ansible-navigator 25.5.0 ansible-runner 2.4.1 …

XtermでWebコンソールを作ってみた

作ったもの AWSのクラウドシェルや、監視装置などにたまについているWebコンソールを作ってみました。 コードはほとんどChatGPTに生成してもらったので、理解度がかなり浅く拡張が効かないのが難点・・ バックエンド バックエンドはFastAPIにしました。 main…

【MCP入門】MCPで自作ツールをクライアントから起動する

はじめに 何かと話題なMCPですが、せっかくのなので試してみました。 MCP Model Context Protocolの略でMCP 私の理解では生成AIエージェントなどが利用するインターフェースです。 標準化したことで外部システムなどとの連携を加速させるものになるといった…

SRLinuxにgNMIでBGPを設定する

概要 ContainerLabで構築したSRLinuxでBGPを設定しエンドエンドで通信ができることを確認します。 今回は思い切ってgNMIで設定をしてみました。 1. gNMIcのインストール gNMIで設定するため、まずgNMI CLI clientをインストールします。 github.com コマンド…

ContainerLabでSRLinuxを起動する(Almalinux × Podman)

概要 ContainerLabはネットワークOSをコンテナ化し、それらをユーザー定義の柔軟なトポロジーで接続して仮想ラボ環境を構築するためのツールです。 今回はWSL2上のAlmaLinuxで動かしてみたので内容を残したいと思います。 環境 WSL2上でAlmaLinux 9.38(Shamr…

LM StudioでローカルでGemma3を試す

LLM

はじめに 近年、ローカル環境で大規模言語モデル(LLM)を実行できるツールが注目を集めています。 その中でも、特に手軽さと使いやすさで人気が高いのが「LM Studio」です。本記事では、LM Studioを使ってGoogleの最新モデルであるGemma3を実際に試してみま…

【Swarm】Swarm入門してみた

概要 2024年10月11日に、OpenAIがSwarmリポジトリをGitHubで公開しました。 github.com Swarmは、複数のエージェントが協力して、問題を解決するフレームワークのようです。 リポジトリには「実験的」「教育的」との説明があるため、今後の展開に注目が必要…

【ell-ai】ell-aiでツール実行を試す【scrapli】

概要 前回紹介したell-aiでツールの実行を試してみます。 usage-automate.hatenablog.com Scrapliを使いSSH接続しコマンドを取得するをツールを作って実行させてみます。 Scrapliは紹介記事も書いてますので、今回は内容についての説明は割愛します usage-au…

【ell-ai】LLMフレームワークell-aiを試す

概要 Xを徘徊していたらとあるポストを見つけました good job everyone good job@LangChainAI must die. pip install ell-ai pic.twitter.com/0ExxDudwAf— william (@wgussml) 2024年9月18日 Langchainより簡単にLLMを利用できるell-aiというものがあるよう…

【Langchain】Cohere React Agentを使いGraphQLでNetBoxから情報取得をする

概要 前回、LangchainでNetBoxからGraphQLで情報取得するToolの動かしてみました。 usage-automate.hatenablog.com 今回は、Agentから利用してみます。 Agentについてはまだ理解が浅く、、勘違いや誤った利用方法をしてるかもしれませんがとりあえず動かして…

【Langchain】BaseGraphQLToolを使ってNetboxから情報取得をする

概要 前回、GraphQLを使ってNetBoxから情報取得を試しました。 今回は、LnagchainのToolであるBaseGraphQLToolを使って同じことを試してみます。 usage-automate.hatenablog.com スクリプト 前回利用したクエリをそのまま利用します。 LangchainのToolはAgen…

GraphQLを使ってNetBoxからデバイス情報を取得する

概要 NetBoxはREST APIだけではなくGraphQLもサポートしています。 今回は、GraphQLでクエリを投げて情報取得をしてみます. 環境 Pythonのライブラリ類をインストールします uv init netbox_graphql cd netbox_graphql/ uv add gql[all] uv add pydantic 実…

【Dify】Agentを試す

概要 Difyでエージェントを使って簡単なアプリを作成します Agent エージェントについての説明は以下です エージェント・アシスタントは、大規模言語モデル (LLM) の推論機能を活用できます。 独立して目標を設定し、複雑なタスクを簡素化し、ツールを操作し…

【Dify】RAGを使った簡単なアプリを作る

概要 Difyで簡単にRAGアプリを作成します RAGについての簡単な説明は以下です RAG(Retrieval-Augmented Generation)は、検索機能を組み込んだ自然言語処理の手法です。 まず、関連するテキストデータをデータベースから検索し、その情報を基にして新たなテ…

【Dify】Difyでサクッとアプリを作ってみる

概要 最近はやりのDifyを触ってみました 簡単なチャットボットを作ってみます Difyとは DifyについてはChatGPTに要約をお願いしました。 「Dify」はオープンソースのLLM(Large Language Model)アプリケーション開発プラットフォームです。 このプラットフ…

【Langchain】同時に複数のモデルに質問する(RunnableParallel)

概要 LangchainのRunnableParallelを利用し、複数のモデルに同時に同じ質問をさせてみます。 使うLLMモデル 1. GPT3.5 2. Command R+ 3. Groq + Llama3 70b 4. Groq + Gemma-7b 以下画像のように1つの質問に対して4つの回答が生成されます。 コード import s…

【Langchain】エージェント経由でNetmikoを使ってネットワーク機器からログを取得する

概要 LLM(大規模言語モデル)を利用したアプリ開発のフレームワークであるLangchainを使ってネットワーク機器からログを取得してみます www.langchain.com (2024/09/13) ライブラリを最新のものに修正 (2024/09/17) Langchain v0.3.0に対応 環境 AlmaLinux 9.…

[Ansible] expectモジュールでNW機器へのアクセスを試みる

Ansible Advent Calendar 2023の17日目の記事です。 qiita.com 概要 Ansibleを使いたいけどTelnetしか対応していないんだよね~ 踏み台アクセスってできる? といったAnsible使う上では中々の無茶ぶりを要求されることがあります(あります) Ansibleは基本的…

[Ansible] running-configをいい感じに比較をしたい(NetworkConfigを使う)

Ansible Advent Calendar 2023 10日目の記事です qiita.com 概要 Ansibleでネットワーク機器に設定をするとき、設定後に事前に用意した想定コンフィグと比較したいときがあります。 iosのshow runは、スペースの個数で階層を表していて、単純に差分を出すだ…

所属するグループ内に失敗したホストがあれば処理スキップしたい

Ansible Advent Calendar 2023 9日目の記事です。 qiita.com やりたいこと 拠点に所属する機器に対して作業をするとき同拠点内の機器でエラーがあったとき ほかの機器の後続スキップさせたいので考えてみました。 機器1と機器8で何かしらの処理が失敗すると…

AWXで作成したテキストファイルをZipに固めて手元に持ってきたい

Ansible Advent Calendar 2023の7日目の記事です。 qiita.com やりたいこと AWXで何か処理を実行した際、ログなどをテキストとして保存したいときがあります。(あります) 基本は、debugモジュールなどで実行結果に表示させればログは残せます、機器がたくさ…

Ansibleでリスト内辞書のデータをIPアドレス順にソートしたい

Ansible Advent Calendar 2023の4日目の記事です。 qiita.com 概要 リスト内辞書に定義されたIPアドレスの情報をKeyにしてソートしたかったのでやり方を考えてみました。 例えば下記のようなデータです destination: - ip: 10.0.1.1 name: 宛先2 - ip: 2.0.1…

ansible.utilsコレクションのフィルタ(keep_keys/remove_keys/replace_keys)を試す

この記事はアドベントカレンダーの20日目の記事です qiita.com はじめに 最近showコマンドの結果をパースして、パースした結果をこねくり回すことが増えてきました。 そんな中で、特定のKeyのみを残す、特定のKeyを削除する必要があり自作フィルタを使ってい…

Ansibleのカスタムフィルターを作る

この記事はエーピーコミュニケーションズ Advent Calendar 2022の16日目の記事です qiita.com やりたいこと Xmasといったらサンタですね。 大人になってからというものサンタにあっていません。 豊富なモジュールやフィルタがあるAnsibleでも サンタに会える…

え!!AnsibleでRouteのdiffを!?できらぁ!

2021Ansible Advent Calendar21日目の記事です qiita.com RoutingのDiffを取りたい ansibleでNW機器の設定変更を行った前後のルートの差分を見たい。こんな時どうしていますか? 取得した結果をシンプルに比較してしまうと、ルートのアップタイムが差分とし…

TTPでパース後の要素が一つだけでもリスト形式にする

usage-automate.hatenablog.com こちらの記事で、わからなかった下記について実装方法が分かったので書き残します パース後の要素が2個以上ある場合は自動的にリストになるようです。 要素が1個の場合リストにならないため、パース後に呼び出す際に注意が必…