投稿

Blogger Sitemap登録エラー解決

Blogger Sitemap登録エラー解決 はじめに ブログ運営において、検索エンジンへの登録は非常に重要です。特に、Google検索にブログのコンテンツを適切に認識してもらうためには、 Search Console への登録と、 sitemap の登録が不可欠です。しかし、 Blogger で作成したブログのsitemapを Search Console に登録しようとすると、エラーが発生することがあります。本記事では、その原因と解決策について詳しく解説します。 BloggerのSitemapとは? Blogger は、ブログの更新情報を自動的に生成するsitemapを提供しています。このsitemapは、ブログのすべての投稿やページをリストアップし、検索エンジンがクロールしやすいように構造化されています。通常、sitemapのURLは「/sitemap.xml?alt=rss」のようになっています。このURLは、ブログのURLに直接アクセスすることで確認できます。このsitemapが正しく機能しているかを確認することも重要です。 Search ConsoleへのSitemap登録で起こりうる問題 Search Console にsitemapを登録する際、以下のようなエラーが発生することがあります。 Sitemap could not be read: ファイルが読み込めないというエラー。 Sitemap is invalid: sitemapの形式が正しくないというエラー。 Sitemap contains errors: sitemapにエラーが含まれているというエラー。 これらのエラーが発生した場合、sitemapのURLが間違っているか、sitemapの形式が正しくない可能性があります。また、robots.txtでsitemapがブロックされている場合も登録できません。 ...

GinとGolangでPOST API

GinとGolangでPOST API 本記事では、GolangのWebフレームワークGinを用いて、HTTP POST APIを構築する方法を解説します。サンプルAPIの実装を通して、API開発の基礎を学びましょう。 はじめに API(Application Programming Interface)は、異なるソフトウェア同士が連携するためのインターフェースです。HTTP POST APIは、データをサーバーに送信し、処理を実行するための一般的なAPI形式です。Ginは、Golangで高速なWebアプリケーションやAPIを構築するための軽量なフレームワークです。シンプルなAPI開発に適しており、学習コストも低いのが特徴です。 GolangでHTTP POST APIを構築する準備 まず、Golangの開発環境を構築します。Golangの公式サイトから最新版をダウンロードし、インストールしてください。次に、Ginフレームワークをインストールします。ターミナルで以下のコマンドを実行します。 go get -u github.com/gin-gonic/gin これで、Ginを用いたAPI開発の準備が整いました。プロジェクトのディレクトリを作成し、適切なGoモジュールを設定することを推奨します。 HTTP POSTリクエストの受信と処理 Ginフレームワークを使用して、HTTP POSTリクエストを受信するためのルーティングを設定します。以下のコードは、 /api/data エンドポイントでPOSTリクエストを受信し、処理を行う例です。 package main import ( "github.com/gin-gonic/gin...

Swift最強プロンプト術

Swift最強プロンプト術 Swift開発を効率化するためのコード自動生成テクニックと、厳選したプロンプトパターン3選を紹介します。 はじめに SwiftはAppleプラットフォームでのアプリ開発に広く使用されている言語です。しかし、繰り返しのコーディングや設計パターンの実装は開発効率を下げる原因となります。本記事では、Swiftにおけるコード自動生成の技術と、最強の効率化を可能にするプロンプトパターン3選を紹介します。 Swiftにおけるコード自動生成の重要性 コード自動生成は、開発の一貫性を保ちながら、時間と労力を大幅に削減する手段です。特にSwiftでは、構造化されたコードを書く必要があり、テンプレート化・自動化の恩恵が大きくなります。この章では自動生成の意義と現在使われている手法の概要を説明します。 コード自動生成を活用するメリット 開発スピードの向上 ヒューマンエラーの削減 チーム間でのコーディングスタイル統一 これらのメリットを最大限に活かすには、適切なプロンプト設計が鍵となります。 プロンプトパターン1:基本構文生成 最初のパターンは「構造化された基本的なSwiftコードの自動生成」です。例えば、モデル定義やプロトコル準拠のテンプレートなど。以下のようなプロンプト例を紹介します: 「SwiftでCodable準拠の構造体を定義してください。プロパティは名前(String)、年齢(Int)、メール(String)です。」 このようなプロンプトで、迅速に正確な雛形コードを生成可能です。 プロンプトパターン2:機能特化型コード生成 このパターンでは、UIコンポーネントやAPI通信など、特定の機能に特化したコードの生成を目指します。例: 「SwiftUI...

SwiftUI Image clipShape パターン3選

SwiftUI Image clipShape パターン3選 導入 SwiftUIは、宣言的な構文でUIを構築するためのフレームワークであり、その中で Image は重要な役割を担います。 clipShape は、 Image の表示領域を特定の形状にクリップ(切り取り)するためのModifierです。 clipShape を活用することで、単調になりがちなUIに、創造性あふれる表現を加えることができます。この記事では、 Swift と SwiftUI を用いて、 Image に clipShape を適用する3つのパターンを紹介します。これらのパターンを通じて、より魅力的なUIデザインを実現するためのヒントを提供します。各パターンには、具体的な サンプルコード が含まれており、すぐに試すことができます。 SwiftUIとImageの基礎 SwiftUI は、Appleプラットフォーム向けのUI構築フレームワークであり、コードの可読性と保守性を高めることを目的としています。 Image は、画像を表示するためのViewであり、様々な形式の画像(アセットカタログ、URL、など)をサポートしています。 Image の基本的な扱い方としては、まずViewに Image を追加し、表示する画像を指定します。画像のサイズ調整は、 .resizable() Modifierを使用し、アスペクト比の維持は .aspectRatio(contentMode: .fit) や .aspectRatio(contentMode: .fill) Modifierを使用します。さらに、 .cornerRadius() や .shadow() などのModifierを組み合わせることで、より洗練されたUIを実現できます。これらの基本的な概念を理解することで、 clipShape の活用がより効果的になります。 clipShapeの基本と活用方法 clipShape は、Viewの表示領域を特定の形状に制限するためのModifierです。これにより、画像の一部を隠したり、特定の...

SwiftUI Grid レイアウト入門

SwiftUI Grid レイアウト入門 はじめに SwiftUIは、Appleプラットフォーム向けのユーザーインターフェースを構築するための宣言的なフレームワークです。その強力な機能の一つに、柔軟なレイアウトを実現するGridシステムがあります。この記事では、SwiftとSwiftUIを用いて、Grid、特に LazyVGrid と LazyHGrid を使ったレイアウトの基本と応用について解説します。 Gridレイアウトの基礎 従来のAuto Layoutは、制約を定義することでUI要素の位置とサイズを決定しますが、Gridレイアウトは、行と列で構成されるグリッド上にUI要素を配置します。これにより、より直感的で効率的なレイアウトが可能になります。SwiftUIでは、 LazyVGrid と LazyHGrid が主要なGridコンポーネントです。 LazyVGrid と LazyHGrid の違い LazyVGrid は、縦方向にスクロール可能なGridレイアウトを作成します。一方、 LazyHGrid は、横方向にスクロール可能なGridレイアウトを作成します。どちらも、表示されるコンテンツに応じて動的にUI要素を生成するため、パフォーマンスに優れています。これらのGridは、特に大量のデータを表示する際に有効です。 サンプルコード: LazyVGrid の基本 以下のコードは、 LazyVGrid を使って、シンプルな縦方向のGridレイアウトを作成する例です。 import SwiftUI struct ContentView: View { let items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"] var body: some View...

ScrollView, LazyVStack, LazyHStack

SwiftUI: ScrollView, LazyVStack, LazyHStack の活用 SwiftUIにおけるスクロール可能なコンテンツの表示方法について、ScrollView、LazyVStack、LazyHStackを組み合わせたサンプルコードを通して解説します。 SwiftUIの概要とScrollViewの紹介 SwiftUIは、Appleプラットフォーム向けのUI構築のための宣言的なフレームワークです。従来の命令型UI構築とは異なり、UIの状態を記述することで、システムが自動的にUIを更新します。ScrollViewは、コンテンツがビューのサイズを超えた場合にスクロールを可能にする基本的なビューです。シンプルなリストや、動的なコンテンツを表示する際に利用します。ScrollViewは全てのコンテンツを一度にメモリに読み込むため、大量のデータを取り扱う場合はパフォーマンスに影響が出る可能性があります。 LazyVStackとLazyHStackの比較と使い分け LazyVStackとLazyHStackは、ScrollViewと同様にコンテンツを縦方向または横方向に配置しますが、必要なコンテンツのみをオンデマンドで読み込むという点で異なります。これにより、大量のデータを取り扱う場合にパフォーマンスを向上させることができます。LazyVStackは縦方向に、LazyHStackは横方向にコンテンツを配置します。どちらを使用するかは、UIのレイアウトによって決定します。例えば、リスト形式のUIにはLazyVStack、カルーセル形式のUIにはLazyHStackが適しています。 ScrollViewとLazyVStack/LazyHStackの組み合わせ方 ScrollViewとLazyVStack/LazyHStackを組み合わせることで、パフォーマンスと柔軟性を両立することができます。ScrollView内にLazyVStack/LazyHStackを配置することで、必要なコンテンツのみを読み込みながら、スクロール可能なUIを実...

HStack, VStack, ZStack

SwiftUIレイアウト: HStack, VStack, ZStackをマスターしよう! SwiftUIは、Appleプラットフォーム向けのUI構築のためのモダンなフレームワークです。この記事では、SwiftUIにおける基本的なレイアウトコンテナであるHStack、VStack、ZStackの使い方を、サンプルコードを交えながら詳しく解説します。これらのコンテナを理解することで、複雑なUIも柔軟に構築できるようになります。 SwiftUIとは? SwiftUIは、宣言的なUIフレームワークであり、従来の命令型UIフレームワークとは異なるアプローチでUIを構築します。コードはUIの状態を記述し、システムが自動的にUIを更新します。これにより、コードの可読性と保守性が向上し、UI開発の効率が大幅に向上します。SwiftUIは、iOS、macOS、watchOS、tvOSなどのAppleプラットフォームで利用可能です。 レイアウトの基本:HStack, VStack, ZStackの紹介 SwiftUIにおけるレイアウトは、コンテナと呼ばれる要素を使用して構築します。主要なコンテナとして、HStack、VStack、ZStackがあります。これらのコンテナを組み合わせることで、様々なUIレイアウトを実現できます。 HStack: 水平方向のレイアウト HStackは、子要素を水平方向に並べて配置します。子要素は、左から右の順に配置されます。 VStack: 垂直方向のレイアウト VStackは、子要素を垂直方向に並べて配置します。子要素は、上から下の順に配置されます。 ZStack: 重ね合わせのレイアウト ZStackは、子要素を重ねて配置します。デフォルトでは、後から追加された要素が手前に表示されます。 サンプルコードで学ぶHStack 基本的なHStackの記述方法は以下の通りです。 HStack { Text(...

LangChain の Runnable 概念とは?

LangChain の Runnable 概念とは? はじめに 近年、生成AI技術は急速に進化しており、様々な分野で活用が広がっています。その中でも、LangChainは、大規模言語モデル(LLM)を基盤としたアプリケーション開発を容易にするための強力なフレームワークとして注目を集めています。本記事では、LangChainの重要な概念の一つである「Runable」について、その概要、具体的な実装方法、そして活用事例を解説します。 LangChain とは LangChainは、LLMを利用したアプリケーション開発を効率化するためのオープンソースフレームワークです。LLMとの連携、プロンプトの管理、外部データソースとの接続、そして複雑なワークフローの構築など、様々な機能を提供します。LangChainを用いることで、開発者はLLMの機能を最大限に活用し、より高度なアプリケーションを迅速に開発することができます。 Runable 概念の解説 LangChainにおける「Runable」は、LLMチェーンの各ステップを定義し、実行可能にするためのインターフェースです。Runableを用いることで、LLMチェーンをより柔軟かつモジュール化された形で構築することができます。Runableは、LLMチェーンの各ステップを独立したコンポーネントとして定義し、それらを組み合わせて複雑なワークフローを構築することを可能にします。これにより、開発者はLLMチェーンの各ステップを個別にテストし、デバッグすることができます。 サンプルコードによる解説 ここでは、PythonとLangChainを用いたサンプルコードを通じて、Runableの具体的な実装方法を解説します。以下のコードは、シンプルなRunableチェーンを構築し、実行する例です。 from langchain.runnables import RunnablePassthrough from langchain.prompts import PromptTemplate from langchain.llms import OpenAI # プロンプトテンプレー...

LangChainで複数のChainを組み合わせる方法

LangChainで複数のChainを組み合わせる方法 このブログでは、LangChainを使って複数のChainを組み合わせ、より複雑な処理を実現する方法を解説します。 はじめに:生成AIとLangChain 近年、自然言語処理の分野で目覚ましい発展を遂げている 生成AI 。その中でも、LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発を容易にするための強力なフレームワークです。LangChainを使うことで、複雑なタスクを複数のChainに分割し、それらを連携させることで、より高度な処理を実現できます。本記事では、LangChainの基本的な概念から、複数のChainを組み合わせる方法、そして具体的な サンプルコード の紹介を行います。 LangChainの基本概念 LangChainの中核となるのは、Chainと呼ばれる処理のまとまりです。Chainは、LLMへの入力、LLMの呼び出し、そして出力の処理といった一連のステップを定義します。Chainを組み合わせることで、より複雑な処理フローを構築できます。例えば、質問応答Chainと要約Chainを組み合わせることで、質問応答システムを構築し、その結果を要約することができます。LangChainは、これらのChainを柔軟に組み合わせるための様々な機能を提供しています。 LangChainで複数のChainを組み合わせる方法 LangChainで複数のChainを組み合わせるには、Chainの出力を次のChainの入力として渡す方法が一般的です。これには、Chainの出力を取得し、それを次のChainの入力としてフォーマットする処理が必要です。LangChainは、この処理を簡単に行うための様々なツールを提供しています。例えば、Chainの出力を変数に格納し、その変数を次のChainの入力として使用することができます。また、Chainの出力を特定の形式に変換するためのTransformerを使用することもできます。 ...

LangChainでステップ処理

LangChainでステップ処理 はじめに 近年、生成AIの進化は目覚ましく、様々なタスクを自動化できるようになりました。特に、大規模言語モデル(LLM)を活用したアプリケーション開発が盛んに行われています。LLMを効果的に活用するためには、プロンプトエンジニアリングだけでなく、複数のLLMやツールを連携させて複雑な処理を実現する必要があります。本記事では、PythonのLangChainライブラリを用いて、複数のステップからなる処理を構築する方法について解説します。具体的には、 SequentialChain を用いて、複数のLLMを連携させ、 生成AI による複雑なタスクを自動化する方法を紹介します。 LangChainとは LangChainは、LLMを活用したアプリケーション開発を容易にするためのPythonライブラリです。LLM、プロンプト、チェーン、インデックス、メモリなどのコンポーネントを提供し、LLMアプリケーションの構築を効率化します。特に、Chainと呼ばれる機能は、複数のLLMやツールを連携させて複雑な処理を実現するための強力なツールです。本記事では、このChainの中でも、最も基本的な SequentialChain について詳しく解説します。 SequentialChainによるステップ処理 SequentialChain は、複数のChainを順番に実行するためのChainです。各Chainは、前のChainの出力を入力として受け取り、処理を行います。これにより、複雑なタスクを複数のステップに分割し、それぞれを個別のChainで処理することで、より柔軟で効率的なアプリケーションを構築することができます。 SequentialChainの基本的な使い方 SequentialChainは、Chainのリストを引数として初期化します。各Chainは、入力として受け取るデータと、出力するデータの型を定義する必要があります。以下に、SequentialChainの基本的な使い方を示す サンプルコード を示します。 from ...

LangChain: ChatPromptTemplateの使い方と実践

LangChain: ChatPromptTemplateの使い方と実践 はじめに 近年、生成AIの進化は目覚ましく、様々な分野で活用が広がっています。特に、大規模言語モデル(LLM)を活用したアプリケーション開発において、LangChainは強力なツールとして注目を集めています。LangChainは、LLMとの連携を容易にし、複雑なタスクを効率的に実行するためのフレームワークです。本記事では、LangChainの主要な機能の一つである ChatPromptTemplate の使い方と、具体的な実装例について解説します。 Python を用いたサンプルコードを通じて、 生成AI アプリケーション開発の基礎を学びましょう。 ChatPromptTemplateとは? ChatPromptTemplate は、LLMへの入力となるプロンプトを動的に生成するためのクラスです。固定的なプロンプトではなく、変数やテンプレートを用いることで、柔軟かつ多様なプロンプトを作成できます。これにより、LLMの応答をより細かく制御し、特定のタスクに最適化することが可能です。 ChatPromptTemplate は、プロンプトのバージョン管理や再利用にも役立ち、開発効率の向上に貢献します。特に、会話型AIアプリケーションにおいて、ユーザーの発言に応じてプロンプトを変化させることで、より自然で人間らしい対話を実現できます。 Pythonでの実装例 それでは、 Python を用いて ChatPromptTemplate の具体的な実装例を見ていきましょう。まず、必要なライブラリをインストールします。 pip install langchain openai 次に、OpenAIのAPIキーを設定します。環境変数に設定することを推奨します。 import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" 以下のコードは、 ChatPromptTemplate を用いて、ユーザーの名前と趣味を尋ねるプロンプトを生成する例です。 ...

LangChainとPromptTemplateによる生成AI活用

LangChainとPromptTemplateによる生成AI活用 はじめに 近年、生成AI技術の進化は目覚ましく、様々な分野での応用が期待されています。特に、大規模言語モデル(LLM)を活用したアプリケーション開発において、LangChainのようなフレームワークと、PromptTemplateの重要性が増しています。本記事では、PythonとLangChainを用いて、PromptTemplateを効果的に活用し、生成AIの可能性を最大限に引き出す方法について解説します。 生成AIとLangChainの概要 生成AIとは、既存のデータに基づいて新しいコンテンツを生成するAI技術です。テキスト、画像、音声など、様々な種類のコンテンツを生成できます。LangChainは、LLMを活用したアプリケーション開発を容易にするためのフレームワークです。LLMとの連携、プロンプトの管理、チェーンの構築など、様々な機能を提供します。Pythonと組み合わせることで、柔軟かつ効率的なアプリケーション開発が可能です。 PromptTemplateの重要性 LLMの性能を最大限に引き出すためには、適切なプロンプトを与えることが重要です。PromptTemplateは、プロンプトをテンプレート化し、動的に生成するための仕組みです。PromptTemplateを使用することで、プロンプトの再利用性、可読性、保守性が向上します。また、PromptTemplateを使用することで、プロンプトのバリエーションを容易に作成し、A/Bテストを行うことができます。 PythonとLangChainによるPromptTemplateの実装 ここでは、PythonとLangChainを用いて、PromptTemplateを実装する例を示します。まず、必要なライブラリをインストールします。 pip install langchain openai 次に、OpenAIのAPIキーを設定します。 import os os.environ["OPENAI_API_KEY"] = "YOUR_API...

LLMChain活用:Python生成AI

LLMChain活用:Python生成AI 1. はじめに:生成AIとLLMChain 近年、生成AIの進化は目覚ましく、様々な分野で活用されています。特に、大規模言語モデル(LLM)は、自然な文章生成能力を持つため、文章作成、チャットボット、翻訳など、幅広い応用が可能です。LLMChainは、LangChainライブラリで提供される機能の一つで、複数のLLMやプロンプトをチェーンのように連結し、複雑なタスクを処理することができます。本記事では、Pythonを用いてLLMChainを活用する方法を、具体的なサンプルコードを交えながら解説します。 2. LangChainとLLMChainの概要 LangChainは、LLMを活用したアプリケーション開発を容易にするためのフレームワークです。LLMChainは、LangChainの中心的なコンポーネントの一つであり、複数のステップを定義し、各ステップでLLMを実行することで、複雑なタスクを自動化できます。各ステップは、プロンプトテンプレート、LLM、および必要に応じて他のチェーンやツールで構成されます。LLMChainを使用することで、LLMの機能を最大限に引き出し、より高度なアプリケーションを開発することが可能です。 3. Python環境の準備 LLMChainを使用する前に、Python環境を準備する必要があります。以下のコマンドを使用して、LangChainと必要なライブラリをインストールします。 pip install langchain openai また、OpenAI APIキーを取得し、環境変数に設定する必要があります。OpenAI APIキーは、OpenAIのウェブサイトから取得できます。環境変数の設定方法は、オペレーティングシステムによって異なります。例えば、LinuxやmacOSでは、以下のコマンドを使用できます。 export OPENAI_API_KEY="YOUR_API_KEY" 環境変数の設定が完了したら、PythonスクリプトからOpenAI APIにアクセスできるようになります。 ...

LangChain入門:PythonでAIチェーン構築

LangChain入門:PythonでAIチェーン構築 はじめに 近年、急速に発展している生成AI技術は、様々な分野で革新をもたらしています。LangChainは、これらの生成AIモデルを連携させ、より複雑なタスクを実行するための強力なフレームワークです。本記事では、Pythonを用いてLangChainチェーンを構築する方法を、サンプルコードを交えながら解説します。LangChainを使うことで、AIアプリケーションの開発を効率化し、より高度なAIソリューションを実現できます。 生成AIの基礎知識 生成AIとは、データから学習し、新しいコンテンツを生成するAI技術の総称です。テキスト生成、画像生成、音楽生成など、様々な種類の生成AIが存在します。これらのモデルは、大量のデータセットを用いて学習することで、人間が作成したコンテンツと区別がつかないほど高品質なコンテンツを生成できるようになりました。LangChainは、これらの生成AIモデルを組み合わせ、より複雑なタスクを実行するための基盤を提供します。 LangChainとは? LangChainは、大規模言語モデル(LLM)をベースとしたアプリケーションを構築するためのフレームワークです。LLMを単独で使用するだけでなく、様々なコンポーネント(プロンプトテンプレート、チェーン、エージェントなど)を組み合わせることで、より複雑なタスクを実行できるようになります。LangChainの最大のメリットは、その柔軟性と拡張性の高さにあります。様々なLLMやデータソースに対応しており、開発者は自身のニーズに合わせて自由にカスタマイズすることができます。 PythonでのLangChainチェーン構築:準備 LangChainをPythonで利用するには、まず必要なライブラリをインストールする必要があります。以下のコマンドを実行してください。 pip install langchain また、OpenAIなどのLLMプロバイダーのAPIキーを取得し、環境変数に設定しておく必要があります。これにより、LangChainからLLMにアクセスできるようになり...

LangChainでLLM活用

LangChainでLLM活用 はじめに 近年、生成AI技術の進化、特に大規模言語モデル(LLM)の登場は目覚ましいものがあります。LLMを活用することで、自然言語処理タスクを効率的に実行できますが、LLM単体では複雑なアプリケーションを構築することが難しい場合があります。そこで役立つのがLangChainです。LangChainは、LLMを活用したアプリケーション開発を容易にするためのフレームワークであり、様々なコンポーネントを提供することで、LLMの可能性を最大限に引き出すことができます。この記事では、LangChainを使ってLLMを活用する方法について、Pythonのサンプルコードを交えながら解説します。 LangChainとは LangChainは、LLMを様々なデータソースや他のツールと接続し、複雑なタスクを実行するためのフレームワークです。LangChainの主な機能としては、以下のようなものが挙げられます。 モデルI/O: LLMとのインタラクションを簡素化し、様々なLLMを簡単に利用できるようにします。 データ接続: 様々なデータソース(ドキュメント、データベース、APIなど)に接続し、LLMがこれらのデータを利用できるようにします。 チェーン: 複数のコンポーネントを組み合わせ、複雑なタスクを実行するためのパイプラインを構築します。 エージェント: LLMが自律的にタスクを実行するための仕組みを提供します。 LangChainを使うことで、LLMを活用したアプリケーション開発を効率的に行うことができます。 PythonとLangChainを使ったLLM活用例 ここでは、LangChainを使ってLLMを活用する具体的な例として、質問応答アプリケーションを構築する方法を紹介します。 # LangChainと必要なライブラリをインストール # pip install langchain openai import os from langchain.llms import OpenAI from langchain.chains im...

LangChain入門: Pythonで生成AI

LangChain入門: Pythonで生成AI はじめに 近年、自然言語処理の分野で目覚ましい発展を遂げている生成AI。文章の自動生成、翻訳、要約など、様々なタスクをこなすことが可能になり、その活用範囲は広がっています。LangChainは、このような生成AIモデルをより簡単に、そして効果的に利用するためのフレームワークです。本記事では、LangChainの概要と、Pythonを用いた基本的な使い方を解説します。 LangChainとは? LangChainは、大規模言語モデル(LLM)をアプリケーションに統合するためのフレームワークです。LLMを単体で使用するだけでなく、様々なコンポーネントを組み合わせることで、より複雑なタスクを実行できます。例えば、LLMに外部データソースへのアクセスを許可したり、複数のLLMを連携させたりすることができます。LangChainを使うことで、開発者はLLMの機能を最大限に引き出し、革新的なアプリケーションを開発できます。 PythonとLangChainのセットアップ LangChainを使い始めるには、まずPython環境を構築する必要があります。Python 3.7以上が推奨されます。pipを使用してLangChainをインストールします。 pip install langchain LangChainをインストールした後、OpenAIなどのLLMプロバイダーのAPIキーを設定する必要があります。OpenAIのAPIキーは、OpenAIのウェブサイトで取得できます。取得したAPIキーを環境変数に設定するか、LangChainのコンフィグレーションファイルに記述します。 LangChainの基本的な使い方 LangChainの最も基本的な使い方は、LLMにテキストを入力し、応答を受け取ることです。以下に、簡単な例を示します。 from langchain.llms import OpenAI llm = OpenAI(openai_api_key="YOUR_OPENAI_API_KEY") prompt = ...

生成AIと技術ブログ

生成AIと技術ブログ 1. はじめに 技術ブログは、エンジニアにとって知識の共有、スキルアップ、そしてコミュニティへの貢献に不可欠な手段です。近年、生成AI技術の進化は目覚ましく、技術ブログの作成プロセスに大きな変革をもたらしています。本記事では、生成AIを活用した技術ブログ作成の可能性を探り、特にサンプルコードの構造化出力、適切な出力フォーマット、効果的なプロンプト設計、そして自然言語処理とデータ前処理の役割について詳しく解説します。 2. 生成AIと技術ブログの相性 生成AIは、技術ブログ作成の様々な段階で役立ちます。例えば、記事の構成案の作成、文章の生成、サンプルコードの自動生成、そして校正・推敲などです。メリットとしては、記事作成の効率化、高品質なコンテンツの作成、そして新しいアイデアの創出などが挙げられます。しかし、生成AIに完全に頼ることは危険です。生成AIはあくまでツールであり、人間の知識と創造性が必要です。また、生成AIが生成する文章やコードには誤りや不備が含まれる可能性があるため、必ず人間による検証が必要です。 3. サンプルコード構造化出力の重要性 技術ブログにおいて、サンプルコードは読者の理解を深め、実践を促す上で非常に重要な役割を果たします。しかし、コードが読みにくかったり、構造化されていなかったりすると、読者は理解に苦しみ、実践を諦めてしまう可能性があります。そのため、サンプルコードは構造化して出力することが重要です。構造化されたコードは、可読性が高く、再利用しやすく、保守しやすいというメリットがあります。また、構造化されたコードは、ドキュメント生成ツールなどとの連携も容易になります。 4. 出力フォーマットの選定 技術ブログにおけるサンプルコードの出力フォーマットには、Markdown、JSON、YAMLなど様々な選択肢があります。Markdownは、可読性が高く、記述が容易なため、技術ブログで最も一般的に使用されるフォーマットです。JSONは、構造化されたデ...

LLMChainとJSON: 生成AI実装

LLMChainとJSON: 生成AI実装 HuggingFace TransformersとLLMChainを活用した生成AIの実装方法を解説します。 はじめに 近年、生成AIの技術が急速に発展しています。特に、大規模言語モデル(LLM)を活用したアプリケーション開発が注目されています。本記事では、HuggingFace Transformersを用いてLLMChainを構築し、JSON形式のデータを取り扱う方法について解説します。この構成は、様々な生成AIタスクに適用可能です。 HuggingFace Transformersとは HuggingFace Transformersは、自然言語処理(NLP)の様々なタスクを容易に実装するためのライブラリです。事前学習済みのモデルが豊富に提供されており、ファインチューニングや推論を簡単に行うことができます。本記事では、このライブラリを用いてLLMを扱うことを前提とします。 LLMChainとは LLMChainは、複数のLLMを連携させて複雑なタスクを実行するためのフレームワークです。例えば、質問応答システムにおいて、まず質問を理解し、次に必要な情報を検索し、最後に回答を生成する、といった一連の処理をChainとして定義することができます。Chainを用いることで、より高度なAIアプリケーションを構築することが可能です。 ChatPromptTemplateの活用 ChatPromptTemplateは、LLMChainにおけるプロンプトを定義するためのテンプレートです。プロンプトは、LLMに対する指示であり、その質がLLMの出力に大きく影響します。ChatPromptTemplateを用いることで、動的にプロンプトを生成し、LLMの応答を制御することができます。例えば、ユーザーからの質問に基づいて、質問の種類や内容を考慮したプロンプトを生成することができます。 JSON形式のデータ...

LangChain x FastAPI で実現する RAG 技術ブログ

LangChain x FastAPI で実現する RAG 技術ブログ はじめに 近年、生成AIの進化は目覚ましく、特に大規模言語モデル(LLM)を活用した様々なアプリケーションが開発されています。しかし、LLMは学習データに含まれない情報に対しては回答できないという課題があります。この課題を解決するために注目されているのが Retrieval-Augmented Generation (RAG) です。本記事では、RAGの概念、そして、LangChain、FastAPI、Streamlit、OpenAI API を組み合わせた技術ブログの構築方法について解説します。本ブログでは、技術的な詳細を網羅し、読者が実際にRAGシステムを構築できるようになることを目指します。 RAGとは? RAG (Retrieval-Augmented Generation) は、LLMが外部の知識ソースから関連情報を取得し、それを基に回答を生成する技術です。これにより、LLMは最新情報や特定のドメイン知識を活用できるようになり、より正確で信頼性の高い回答を提供できるようになります。RAGは、LLMの知識不足を補完し、回答の質を向上させるための強力な手段です。 LangChainによるデータローディングとインデックス作成 LangChainは、LLMアプリケーションの開発を容易にするためのフレームワークです。データローディング、ドキュメント変換、インデックス作成など、RAGに必要な機能をモジュール化して提供しています。本ブログでは、LangChainを用いて、PDF、テキストファイル、Webサイトなど、様々な形式のデータを効率的に処理し、ベクトルデータベースに格納する方法を解説します。特に、LangChainのDocument Loader、Text Splitter、Vectorstore Index Creatorといったモジュールを活用することで、データ準備の自動化を実現します。 FastAPIによるAPI構築 FastAPIは、PythonでAPIを構築するためのモダンなフレームワークです。高速、高効率、使いやすさを特徴とし、...

OllamaLLM×Python: ローカル生成AI

OllamaLLM×Python: ローカル生成AI はじめに 近年、生成AI技術の発展は目覚ましく、様々なサービスが登場しています。しかし、多くのサービスはクラウド上で動作し、プライバシーやコストの問題が懸念されます。本記事では、ローカル環境で動作する生成AIモデルをPythonで利用する方法について解説します。具体的には、OllamaLLMとPythonを組み合わせ、PromptTemplateとPydanticOutputParserを用いて、より柔軟で制御しやすい生成AIアプリケーションを構築します。 OllamaLLMとは? OllamaLLMは、ローカル環境で大規模言語モデル(LLM)を実行するためのツールです。複雑なセットアップを必要とせず、簡単にLLMをダウンロードして利用できます。本記事では、OllamaLLMを利用することで、クラウドに依存せずに生成AIを活用する方法を紹介します。OllamaLLMは、様々なLLMに対応しており、目的に合わせてモデルを選択できます。 開発環境の準備 まず、PythonとOllamaLLMをインストールします。Pythonはバージョン3.7以上を推奨します。OllamaLLMは、公式サイトからダウンロードしてインストールできます。インストール後、OllamaLLMが正常に動作することを確認してください。また、必要なPythonパッケージをインストールします。具体的には、 pip install pydantic を実行します。 PromptTemplateを用いたプロンプトの作成 生成AIの性能は、与えるプロンプトの質に大きく左右されます。PromptTemplateを用いることで、プロンプトを動的に生成し、より柔軟な制御を実現できます。例えば、ユーザーからの入力に基づいてプロンプトを生成したり、特定のフォーマットでプロンプトを作成したりできます。本記事では、PromptTemplateを用いて、より効果的なプロンプトを作成する方法を解説します...

【AI】Dify x Ollama: ローカル構築ガイド

Dify x Ollama: ローカルPCへの構築ガイド 大規模言語モデルを社内で安全に活用するためのステップバイステップガイド はじめに 近年、大規模言語モデル(LLM)の活用が注目されています。しかし、外部APIへの依存やセキュリティ上の懸念から、社内でLLMを構築・運用したいというニーズが高まっています。本記事では、オープンソースのLLMフレームワークであるDifyと、ローカルLLM実行エンジンであるOllamaを組み合わせ、社内のローカルPCにLLM環境を構築する方法を解説します。この構築方法により、セキュリティを確保しつつ、柔軟かつ効率的にLLMを活用することが可能になります。 DifyとOllamaとは? Difyは、LLMアプリケーションを構築するためのオープンソースフレームワークです。RAG(Retrieval-Augmented Generation)パイプラインを簡単に構築でき、多様なデータソースとの連携も可能です。一方、Ollamaは、ローカルPC上でLLMを簡単に実行できるツールです。コマンドラインインターフェースを通じて、様々なモデルをダウンロードし、実行できます。DifyとOllamaを組み合わせることで、ローカル環境でRAGアプリケーションを構築し、社内データに基づいたLLM活用を実現できます。 構築方法:Ollamaのセットアップ まず、Ollamaを社内のローカルPCにインストールします。Ollamaの公式サイト( https://ollama.com )から、お使いのOSに合ったインストーラをダウンロードし、指示に従ってインストールしてください。インストールが完了したら、ターミナルを開き、`ollama --version`コマンドを実行して、Ollamaが正しくインストールされていることを確認します。次に、使用したいモデルをダウンロードします。例えば、Llama 2 7Bモデルをダウンロードするには、`ollama pull llama2`コマンドを実行します。モデルのダウンロードには時間がかかる場合があ...

【生成AI】LangChain×Ollamaでgemma3:27b活用

ローカル最強!LangChain×Ollamaでgemma3:27b活用 1. 導入 生成AIアプリ開発は、クラウド環境が主流でしたが、近年、ローカル環境での開発が注目を集めています。ローカル環境で開発するメリットは、プライバシーの保護、オフラインでの動作、そしてコスト削減などが挙げられます。特に、高性能なローカルPCと適切なツールを組み合わせることで、クラウド環境と同等のパフォーマンスを実現することも可能です。この記事では、高性能GPU RTX-3090を搭載したローカルPCで、LangChainとOllamaを用いてgemma3:27bモデルを活用した生成AIアプリ開発について解説します。 2. OllamaとRTX-3090のセットアップ Ollamaは、ローカルで大規模言語モデルを実行するためのツールです。RTX-3090のような高性能GPUを活用することで、高速な推論が可能になります。Ollamaのインストールは非常に簡単です。公式ドキュメントに従って、お使いのOSに合わせた手順でインストールしてください。インストール後、GPUが正しく認識されているか確認しましょう。確認方法は、OllamaのコマンドラインツールでGPU情報を表示することで確認できます。RTX-3090が認識されていれば、gemma3:27bのような大規模モデルの実行準備は完了です。 3. gemma3:27bの実行 Ollama上でgemma3:27bモデルを実行するには、以下のコマンドを実行します。 ollama run gemma3:27b 。初回実行時には、モデルのダウンロードが行われます。ダウンロード完了後、Ollamaの対話モードが起動し、gemma3:27bモデルと会話できるようになります。簡単な質問を投げかけて、正常に動作しているか確認しましょう。例えば、「今日の天気は?」と質問すると、gemma3:27bモデルが回答を生成します。GPUが正常に認識されていれば、高速な応答が期待できます。 4. LangChainによるアプリ開発 LangChainは、大規模言...

【iOS】2.3.10 performance: accurate metadata 対策

iOS審査リジェクト: 2.3.10 performance: accurate metadata 対策 AppleのiOSアプリ審査におけるリジェクト問題と、特に「2.3.10 performance: accurate metadata」によるリジェクト事例の徹底解説。 1. AppleのiOSアプリ審査 AppleのiOSアプリ審査は、ユーザーエクスペリエンスの向上とプラットフォームの品質維持を目的としていますが、その厳しさから、多くの開発者がリジェクトに悩まされています。特に、審査基準が明確に定義されていない場合や、審査員の解釈によって判断が異なる場合があり、リジェクト理由の特定や対策が困難になることがあります。本記事では、最近頻発している「2.3.10 performance: accurate metadata」によるリジェクト事例に焦点を当て、その原因と対策、そして審査に通過するためのポイントを解説します。 2. 問題の詳細 「2.3.10 performance: accurate metadata」とは、AppleのApp Store Review Guidelinesに記載されている、アプリのパフォーマンスと正確なメタデータに関する項目です。具体的には、アプリの説明、キーワード、スクリーンショットなどが、アプリの機能やコンテンツを正確に反映しているかどうか、そして、アプリのパフォーマンスがユーザーエクスペリエンスに悪影響を与えないかどうかを審査します。この項目に違反した場合、アプリはリジェクトされ、App Storeでの公開が遅れる可能性があります。審査ガイドラインでは、メタデータが誤解を招くものであったり、アプリの機能を誇張していたりする場合、または、アプリのパフォーマンスが低い場合、リジェクトされる可能性があると明記されています。 3. リジェクト事例の分析 実際にリジェクトされたアプリの事例を分析した結果、メタデータの不備が主な原因であることがわかりました。例えば、アプリの説明文が実際の機能と異なっていたり、キーワードがアプリのコンテンツと関連性がない場合、または、スクリ...

【MySQL】MySQL文字コード変更エラー

MySQL文字コード変更で「utf8 is not a compiled character set」エラー発生!原因と解決策を解説 発生した問題 古いサーバーでMySQLの文字コードを utf8 から utf8mb4 に変更しようとしたところ、MySQLにログイン時に以下のエラーが発生しました。 mysql: Character set 'utf8' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file /usr/share/mysql/charsets/Index.xml も設定変更済みであり、 my.cnf も以下のように修正済みです。 [mysqld] character-set-server = utf8mb4 [client] default-character-set = utf8mb4 エラーの原因 このエラーは、MySQLが utf8 の文字コード設定を認識できていないことが原因です。考えられる原因は以下の通りです。 MySQLの再起動漏れ: my.cnf を変更後、MySQLを再起動していない。 Index.xml の編集ミス: Index.xml の編集内容に誤りがある。 MySQLのバージョン: 古いバージョンのMySQLでは utf8mb4 が正しくサポートされていない場合がある。 OSの文字コード設定: OSの文字コード設定がMySQLと競合している。 解決策 以下の手順で問題解決を試みてください。 MySQLの再起動: sudo systemctl restart mysqld Index.xml の確認: /usr/share/mysql/charsets/Index.xml の内容を確認し、 utf8 と utf8mb4 の設定が正しいことを確...

【iOS】UIStackViewでマージンを設定する方法

UIStackViewでマージンを設定する方法 UIStackViewは、iOSアプリ開発でUI要素を効率的に配置するための強力なツールです。しかし、デフォルトでは要素間のスペースやStackView自体の外側のマージンを設定するのに少し工夫が必要です。この記事では、UIStackViewでマージンを設定するさまざまな方法を紹介します。 1. layoutMarginsプロパティを使用する UIStackViewの layoutMargins プロパティを使用すると、StackView自体の外側にマージンを設定できます。これにより、StackViewを親ビューから一定の間隔で配置できます。 コード例 let stackView = UIStackView() stackView.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20) stackView.isLayoutMarginsRelativeArrangement = true isLayoutMarginsRelativeArrangement を true に設定することで、 layoutMargins がStackViewの配置に影響を与えるようになります。 2. spacingプロパティを使用する spacing プロパティを使用すると、UIStackView内の要素間のスペースを設定できます。これにより、要素間に均等なスペースを設けることができます。 コード例 let stackView = UIStackView() stackView.spacing = 10 上記の例では、StackView内の要素間に10ポイントのスペースが設定されます。 3. ダミービューを使用する UIStackViewの最初または最後にダミーのUIViewを追加することで、擬似的にマージンを設定できます。この方法は、より細かいマージン制御が必要な場合に便利です。 コード例 let stac...

【AI】Xのおすすめキーワード入れると、記事を生成AIがhtml自動生成してくれるのを作成

怒り、Switch、日経平均…現代社会の歪みと消費者の行動 導入 ファンの怒り、Switch2の遅延、日経平均の変動、関税発表、けつあな確定申告、化学調味料への依存、そして定時退社への渇望。一見、全く関連性のないこれらのキーワードは、実は現代社会における消費者の行動、経済動向、そして生活習慣の歪みを反映した鏡なのです。本記事では、これらのキーワードを紐解き、その複雑な関連性を考察します。 キーワード解説と関連性 まず、それぞれのキーワードを解説します。「ファンの怒り」は、期待していた製品やサービスが満たされない場合に発生する感情的な反応です。Switch2の遅延は、ゲームファンにとって大きな失望となり、SNSなどを通じて怒りが拡散する可能性があります。「日経平均」の変動は、経済全体の状況を反映し、消費者の購買意欲に影響を与えます。関税発表は、輸入品の価格に直接影響し、消費者の購買行動を左右します。そして、「けつあな確定申告」という極端な行動は、税制への不満や経済的な困窮を象徴していると言えるでしょう。一方、「化学調味料」への依存は、手軽さと味を追求する現代人の食生活を反映し、「定時退社」への渇望は、ワークライフバランスを重視する価値観の高まりを示しています。 これらのキーワードは、互いに複雑に絡み合っています。例えば、日経平均の悪化により消費者の購買意欲が低下し、企業は価格競争に陥り、結果的に化学調味料の使用が増加する可能性があります。また、関税発表により輸入品の価格が上昇し、消費者は国内製品に目を向ける一方で、Switch2のような海外製品の購入を控える可能性があります。そして、経済的な困窮や税制への不満が、けつあな確定申告のような極端な行動に繋がる可能性も否定できません。定時退社を求める声が高まる背景には、過酷な労働環境や経済的な不安があり、これらの要因が消費者の行動に影響を与えていると考えられます。 現代社会への影響 これらのキーワードが現代社会に与える影響は多岐にわたります。消費者の行動の変化は、企業のマーケティング戦...

【AI】ブロック崩し 作ってもらった

【iOS】WWDC 2025でiOS 19がくるよ。

どんな機能や仕様が追加されるかは、チェックだけはしておかないとなぁ。 6月にWWDCとの事なので、忘れないようにしたんと

【生成AI】「一生ヘタレプログラマ」ブログの感想を聞いてみた

「一生ヘタレプログラマ」ブログの感想 「 一生ヘタレプログラマ 」は、技術的な話題や日記、雜記を中心に描いたブログです。 最新の記事では、AIを活用した小説や、大規模言語モデル (LLM)のローカル環境での動作に関する技術的な取り組みが紹介されています。 特に、 Ollama を使用してGemma3:27Bを動かす試みや、LLaMA-Factoryを使ったファインチューニングの方法など、最新の技術トピックに突っ込んでいることが伝わってきます。 また、SEO対策やHTMLのレイアウトに関する考察もあり、広い技術的関心を持っていることが伝わってくるコンテンツです。

【iOS】UILabel等でヒラギノフォント表示問題:文字が切れる原因と対策【sizeToFit()対策も】

iOS開発でヒラギノフォントを指定した場合、 UILabel や UIButton で文字が表示される際に、一部の文字が切れてしまう問題は、多くの開発者が遭遇する悩ましい問題です。特に sizeToFit() メソッドを使用すると、その傾向が顕著になります。 本記事では、この問題の原因を深堀りし、いくつかの対策方法を紹介します。 なぜ文字が切れてしまうのか? ヒラギノフォントは、他のフォントと比較して、文字の高さやベースラインの位置が微妙に異なる場合があります。iOSのレイアウトエンジンが、この差異を適切に処理できない場合に、文字が途中で切れてしまう現象が発生します。 特に、以下の文字で発生しやすいです。 ①gjpqyÄÖÜßĀĂĄąĆĈĊČĎŅ これらの文字は、文字の形状が複雑であったり、上付き文字や下付き文字を含むため、レイアウトエンジンが正しく処理できない場合があります。 対策方法 いくつかの対策方法を試してみましょう。 1. AttributedStringの調整 (ベースラインオフセット) 他のサイトで紹介されているように、 NSAttributedString の baselineOffset を調整する方法は有効な手段の一つです。 let attributedString = NSAttributedString(string: "問題のある文字列", attributes: [ .font: UIFont(name: "ヒラギノ角ゴシック W3", size: 16)!, .baselineOffset: 1.0 // 少し上にずらす ]) label.attributedText = attributedString しかし、この方法だけでは、ÄÖÜの「..」部分が切れてしまうケースがあります。 2. clipsToBounds = false そこで、意外と盲点になりがちなのが、 clipsToBounds プロパティです。 label.clipsToBounds = false この設定により、文字が切れる問題を回避できる場合があります。ただし、画面の上下にViewがピッタリと配置されている場合は、文字がはみ出てしまう可能性があるため、注意が必要です。 ...

【Swift】テストできない、純粋関数を意識しようよ。

はじめに SwiftUIでアプリを開発していると、 View の中にロジックを書いてしまい、いざ単体テストをしようとするとテストできない……そんな経験はありませんか? 「実装者がどこまで想定して動作確認をおこなったのか分からない」「テストがしにくく、バグが潜んでいても気付きにくい」など、テストのしづらさは品質の低下につながります。 そこで重要なのが 純粋関数(Pure Function) です。本記事では、純粋関数を活用して、テストしやすいコードを設計する方法について解説します。 SwiftUIのViewの中にロジックを書くと何が問題? SwiftUIでは、 View の中にロジックを書くと次のような問題が発生します。 1. テストが困難になる View はUIの描画を行うためのものであり、状態を持つことが多いため、 純粋に入力→出力の関係に基づいたテストができなくなる ことが多いです。 struct ContentView: View { @State private var count: Int = 0 var body: some View { VStack { Text("\(count)") Button("Increment") { count += 1 } } } } この例では、ボタンを押すたびに count が増えますが、 このロジックを単体テストしようとすると、UIのイベントをシミュレートする必要があります。 2. 動作確認の範囲が曖昧になる 実装者がどの条件を想定して動作確認を行ったのか分からないため、 バグが潜んでいても気付きにくくなります。 純粋関数を活用しよう 純粋関数とは、 副作用がない(外部の状態を変更しない) 同じ入力に対して常に同じ出力を返す という特性を持つ関数のことです。 純粋関数を用意すると、テストがしやすくなります。 例:ビジネスロジックを分離する 先ほどの count の更新を純粋関数に切り出してみましょう。 func increment(_ value: Int) ...

【LLM】生成AIのシステムプロンプトのサンプル

 システムプロンプトのサンプル 日本語指定

【AI小説】10年前の話 とある村に立ち寄った時に、老人から教わった家庭の魔法

 リュウは、埃っぽい古書を読み漁りながら、記憶を辿っていた。10年前、まだ幼かった彼は、師匠であるフリンの指示で、魔力調査のため、人里離れた小さな村を訪れていた。フリンは、稀に現れる特殊な魔力を持つ人間を探しており、リュウはその手伝いを任されていた。 村はずれの、苔むした石畳の道を歩いていると、古びた家屋の前に、腰の曲がった老人が座っているのを見つけた。老人は、庭で野菜を育てており、リュウは思わず声をかけた。 「こんにちは、おじいさん。何か手伝うことはありますか?」 老人は、顔を上げ、穏やかな笑顔でリュウを迎えた。 「おや、若い魔法使いじゃな。わしは、この村の庭師のゲンゾうじゃ。手伝うことは特にないが、もしよければ、わしの庭で少し休憩していきなさい」 リュウは、ゲンゾウの誘いに応じ、庭で休憩することにした。ゲンゾウは、リュウに庭で育てている野菜を振る舞い、畑仕事の合間に、様々な話をしてくれた。 「わしは、若い頃から、この畑で野菜を育ててきた。魔法の力は使えないが、土と対話するように育てれば、どんな野菜でも美味しく育つものじゃ」 リュウは、ゲンゾウの言葉に興味を持ち、畑仕事を手伝うことにした。ゲンゾウは、リュウに、野菜の育て方だけでなく、畑仕事に使う簡単な魔法を教えてくれた。 「これは、野菜の成長を促進する魔法じゃ。土に魔力を込めれば、野菜はぐんぐん育つ。ただし、魔力を込めすぎると、野菜は腐ってしまうから、注意が必要じゃ」 リュウは、ゲンゾウから教わった魔法を使い、野菜の成長を促進した。魔法の力で、野菜はみるみるうちに大きくなり、リュウは驚きを隠せなかった。 「すごい!本当に成長が早くなってる!」 ゲンゾウは、リュウの興奮した様子を見て、微笑んだ。 「魔法は、あくまで道具じゃ。大切なのは、土と対話し、野菜を慈しむ心じゃ」 ゲンゾウは、リュウに、他にも様々な魔法を教えてくれた。料理の味を良くする魔法、洗濯物を綺麗にする魔法、壊れた道具を一時的に修復する魔法など、どれも実用的な魔法ばかりだった。 「これらの魔法は、わしが若い頃に、旅先で出会った魔法使いから教わったものじゃ。生活を豊かにする魔法は、戦闘魔法ほど派手ではないが、人々の暮らしを支える大切な魔法じゃ」 リュウは、ゲンゾウから教わった魔法を、フリンに報告した。フリンは、リュウの報告に興味を示さなかったが、リ...

【AI小説】「師匠の価値観アップデート」

「ねえ、リュウ。今日、人間たちは何か特別なことをするのかしら?」 フリンは、琥珀色の瞳を輝かせ、リュウに問いかけた。居酒屋のカウンターに並んだ、魔法で冷やされた麦酒を一口飲みながら。 「え?今日はホワイトデーですよ、師匠」 リュウは、フリンの質問に少し驚きながら答えた。この世界には、そもそもチョコレートという概念すらない。ホワイトデーについても、フリンが知っているはずがない。 「ホワイトデー?それは、一体何かしら?」 フリンの質問に、リュウは少し戸惑った。どう説明すれば、この1200歳のエルフに、人間界の習慣を理解させられるだろうか。 「あの、バレンタインデーにチョコレートをもらった人が、お返しをする日です。感謝の気持ちを込めて、お菓子とか、プレゼントを贈るんです」 リュウの説明に、フリンは眉をひそめた。 「チョコレート?お返し?感謝の気持ち?どういうことかしら?エルフの世界では、贈り物をするのは、特別な場合に限られる。感謝の気持ちは、言葉で伝えるものよ」 フリンの言葉に、リュウは苦笑した。 「師匠、人間は、言葉だけでは伝えきれない感情を、贈り物で表現することがあるんです。例えば、チョコレートは、甘いだけでなく、相手への愛情や感謝の気持ちを込めることができる、特別な食べ物なんです」 「なるほど…特別な食べ物、ね。でも、なぜ、チョコレートをもらった人が、お返しをしなければならないの?受け取った時点で、感謝の気持ちは伝わっているはずよ」 フリンの質問は、核心を突いていた。リュウは、少し考えてから答えた。 「それは…人間関係のバランスを取るため、というか…相手に気を遣わせないように、という気持ちもあるんです。お返しをすることで、相手との関係を円滑に保つことができる、と考えている人もいます」 フリンは、リュウの言葉に納得していない様子だった。 「人間関係のバランス?円滑に保つ?そんな面倒なこと、エルフの世界にはないわ。私たちは、自分の気持ちに正直に生きている。相手に気を遣ったり、バランスを取ったりするようなことはしないわ」 フリンの言葉に、リュウは少し笑ってしまった。 「師匠は、本当に人間とは違う考え方をしているんですね」 「当たり前よ。私は、1200年も生きてきたエルフだもの。人間の短い人生の価値観なんて、理解できないことばかりよ」 フリンは、そう言いながら、麦酒を飲み干...

【LLM】Ollamaをつかってgemma3:27bを動かしてみた。

Gemma 3 動作環境と利用状況 Gemma 3 を動作させるための環境と、実際に利用してみた状況についてまとめました。 動作環境 GPU: RTX-3090 OS: Ubuntu 利用条件 Gemma 3 を利用するには、 Ollama 0.6 以上をインストールする必要があります。 実行コマンド 4Bモデル: ollama run gemma3:4b 12Bモデル: ollama run gemma3:12b 27Bモデル: ollama run gemma3:27b 利用感 個人または少人数での利用であれば、十分な性能を発揮できます。 GPU使用率は90%程度まで上昇しますが、それなりに利用可能です。 多人数での利用の場合、多少の待ち時間が発生する可能性があります。 GPUメモリが不足する場合は、量子化された軽量モデル、または12Bモデルなどを利用することを推奨します。

【LLM】LLaMA-Factoryを使ってファインチューニングする方法(調査中)

 確認中・・・・。 LLaMA-Factoryをセットアップ UI起動 データセット用意 解析 ーーー データセットの用意方法と解析用のパラメータを調査する

【LLM】ollama modelfile error

サンプルを試したら下記のようなエラーがでた  Error: (line 7): command must be one of "from", "license", "template", "system", "adapter", "parameter", or "message" from とかが全部大文字で書いていたけど、小文字にするのが正しいらしいです。

【LLM】ベースモデルはgemma2を使って、LoRAで追加してみた。(これから)

 やり方は、これから調べながらやる。 ollamaが動く環境があることを前提とする。 すでに、Docker使って、ollama + OpenWebUIの環境作って動作できている状態で そこからgemma2:9Bがいい感じに動いたので、独自の値を追加し当たらな情報を返したい 例えば、子どもの誕生日とか、特定の情報を追加してオレオレ生成AIを作っていきたい。 そしたら、思い出とかも追加して、いつ何があったか?とか出力してくれるのでは?と。

LLM(大規模言語モデル)をOllama使ってローカルで動かす。

タイトルの通りです。 ただのこれからやってみるよ。 って言う 宣言です。 これから、実際にPCを構築して、動作確認していきます。 そのうち、更新していきます・・・。 とりあえず。 RTX-3090 で LLM動かせた。 RTX-3090でOllamaを利用して動作可能な言語モデルは、 Gemma2:27B やdeepseek-r1:32bのあたりが限界でした。 これ以上大きい言語モデルはOOMが発生して、起動できなかったです。

htmlでSEO対策ってさ。

SEO対策の基本を語ります お久しぶりです!最近、仕事が立て込んでおり、ブログの更新が遅くなっていました。ようやく落ち着いてきたので、久々に執筆させていただきます。 今回のテーマは、ウェブサイトの集客に欠かせない SEO対策 です。 SEO対策には、専門の業者に依頼するのが一番手っ取り早いと思っています。指摘された箇所を修正するだけで、効果を実感できるでしょう。しかし、資金に余裕がない私のような場合は、 自力で試行錯誤し、効果測定を繰り返す しかありません。 そこで今回は、SEO対策の 基本中の基本 をお伝えします。 # SEO対策ってどうするの? SEO対策は、様々なテクニックがありますが、まずは以下の2点を意識するだけで、大きく改善する可能性があります。 コンテンツの内容が充実しているか? 検索する人のことを考えているか? これら2点をしっかり守れば、なんとかなります!細かいSEO対策テクニックは、専門誌やウェブサイトで学ぶのがおすすめです。 コンテンツの内容が充実しているか? ここが一番重要です。あなたのウェブサイトのコンテンツは、 「読みたい!」と思わせる内容 になっていますか? ただのメモ書きや、自慢話だけになっていませんか? 読者の役に立つ情報、面白い情報、共感できる情報など、読者の心に響くコンテンツ作りを心がけましょう。 検索する人のことを考えているか? 読者がどんなキーワードであなたのサイトを探しているのかを考えましょう。 Googleの検索窓で、あなたのサイトを見つけるために使われるであろうキーワードは? 例えば、「美味しいケーキ レシピ 簡単」のように、具体的なキーワードを意識してコンテンツを作成することで、検索結果の上位表示を目指せます。 以上、SEO対策の基本でした。 最後に、こんなサイトを見に来てくれてありがとうございます!

【html】html でlayoutの基本はdisplay: gridでよいのでは?  横に並べたり、縦に並べたり

シンプルなレスポンシブサイト構築なら、もうGrid Layoutで決まり! 最近、シンプルなレスポンシブサイトを構築する際、レイアウト方法に迷うことはありませんか? そんな時は、 CSS Grid Layout を使うのが、もう一番無難でオススメです! 特に、横並びで均等割りのレイアウトを実現したい場合、Grid Layoutは非常に強力なツールとなります。 例えば、横3列で均等に要素を配置したい場合、以下のCSSコードで簡単に実現できます。 display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; このコードのポイントは、 grid-template-columns: repeat(3, 1fr); の部分です。 repeat(3, 1fr) は、「1fr」という単位を3回繰り返すという意味で、各列に均等なスペースを割り当てます。 列数を調整したい場合 は、 3 の部分を 2 や 1 に変更するだけでOK! 簡単に列数を変更できるので、様々な画面サイズに対応したレスポンシブデザインも容易に実現できます。 さらに、要素間の 隙間は gap プロパティ で調整できます。 gap: 16px; のように指定することで、要素間に16pxの隙間が生まれます。この値を調整することで、見た目のバランスを整えることができます。 Grid Layoutは、複雑なレイアウトもシンプルに記述できるだけでなく、レスポンシブデザインにも柔軟に対応できるため、現代のWebサイト構築において非常に強力なツールです。 ぜひ、Grid Layoutを活用して、効率的で美しいWebサイトを構築してみてください!

html 要素を右に並べたい

  とりあえず、メモ     display: flex; ーーーー <html> <style>   .flex {     display: flex;   } </style> <body>   <div class="flex">     <p>社長</p>     <p>部長</p>     <p>課長</p>   </div> </body> </html>

【html】safariでvideoタグの上にかぶせてうまく表示できない件

Safariでvideoタグの上にかぶせてうまく表示できない件 HTMLでコーディングしていて、動画の上に別のタグを重ねるデザインを実装したところ、Safariでの表示に問題が発生しました。他のブラウザでは正常に表示されるのに、Safariだけ動画の裏側に要素が表示されてしまい、困っていました。 原因として、 z-index の問題か、Safariのレンダリング順序の問題かと考え、調べてみました。 その結果、以下のCSSを追加することで、重ねて表示できるようになりました。 ----解決策---- transform: translateZ(1px); /* 回避手段 */ この方法で、Safariでも動画の上に要素を正しく重ねて表示できるようになりました。

Guideline 4.3(a) - Design - Spam

リジェクトされた、しかもスパム扱い これどうしたらよいだろうか・・・・ クライアントにこのアプリ作ってって言われて作成しただけなのに Guideline 4.3(a) - Design - Spam We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to the App Store by other developers, with only minor differences. Submitting similar or repackaged apps is a form of spam that creates clutter and makes it difficult for users to discover new apps. Next Steps Since we do not accept spam apps on the App Store, we encourage you to review your app concept and submit a unique app with distinct content and functionality. ---- ガイドライン4.3(a) - デザイン - スパム あなたのアプリは、他の開発者がApp Storeに提出したアプリと、バイナリ、メタデータ、および/またはコンセプトが類似しており、わずかな違いしかありません。 類似したアプリやリパッケージされたアプリの提出は、乱雑さを生み出し、ユーザーが新しいアプリを発見することを困難にするスパムの一形態です。 次のステップ App Storeではスパムアプリを受け付けておりませんので、アプリのコンセプトを見直し、明確なコンテンツと機能を備えたユニークなアプリをご提出ください。