- 1. ViewSet actionsの種類 | Django REST Framework
- 2. PostgreSQL 便利なネットワークアドレス型を活用する
- 3. LLMのTanuki-8Bを使ってみた
- 4. [Python] FirebaseのTimeoutを設定 (Cloud Functions)
- 5. WSL2 Python をつかって ROS2 をあつかってみよう
- 6. 【Flask】アプリ全体で API Keyを安全に取り扱う方法
- 7. 競馬予想AIを作りたい(AI学習編3)
- 8. FireDucks vs Pandas 速度勝負、データサイズ500万行あたりが勝負の分かれ目
- 9. 【Qiita Web API①】Pythonを使ってQiita APIの記事情報を取得してみた!
- 10. 作業メモ: uvからtestpypiにpublish
- 11. Herokuに代わるタダのDiscord Botのホスティング先まとめ
- 12. Windows Python JupyterLab 仮想環境 構築手順
- 13. Dockerでローカル日本語LLMの構築
- 14. 統計学
- 15. notionに論文を登録すると数式もふくめよしなに翻訳してくれるフローを構築した
- 16. アナログ回路におけるMOSトランジスタのキャラクタライズ
- 17. 自動でデータ分析!OpenAI API×Langchain×Streamlitを利用した「データ分析EDAアプリ」の開発
- 18. LLMに短歌を詠ませる
- 19. 個人的な備忘録:Lambda関数でのいろいろな処理について
- 20. 生成AIを活用したアバターの可能性: HeyGenで未来のインタラクティブ体験を試す
ViewSet actionsの種類 | Django REST Framework
Django REST FrameworkのViewSet、特にModelViewSetで自動的に提供しているlist, retrieve, create, update, partial_update, destroyなどのCRUDアクションの種類を整理します。
参考:公式ドキュメント[ViewSet actions](https://www.django-rest-framework.org/api-guide/viewsets/#viewset-actions)
# create
– HTTPリクエスト: POST
– 役割: 新しいレコードを作成します。通常、POSTリクエストを処理し、新しいインスタンスをデータベースに保存します。新規登録によく使われます。
“`python
def create(self, request, *args, **kwargs)
“`# list
– HTTPリクエスト: GET (複数のオブジェクト)
– 役割: 全てのレコード、またはフィルタされたレコードのリストを取得します。通常は/api/resource/のようなリクエストに
PostgreSQL 便利なネットワークアドレス型を活用する
過去の投稿で地域インターネットレジストリ(RIR) で公開されているデータから不正アクセスしたホストの国コードとネットワークアドレスを取得する方法を紹介いたしました。
https://qiita.com/pipito-yukio/items/147f7b2f42ad9fc1dbd0
そのときの出力を再掲します。
“`bash
(py_psycopg2) $ python TestDetectCountryCode.py –target-ip 103.77.241.34
INFO Find 103.77.241.34 in (network: “103.77.240.0/23”, country_code: “VN”)
“`上記投稿で紹介した**地域インターネットレジストリ(RIR) で公開されているデータはデータベースで管理しており開始IPアドレス列に関しては文字列として格納していました。**
そのときに紹介した方法ではネットワークアドレス (CIDR形式) と国コードを取得するまでに2段階の処理を実行していました。
+ **地域インターネットレジストリデータ (テ
LLMのTanuki-8Bを使ってみた
# 概要
ローカル環境でも動作するTanuki-8Bモデルを利用していろいろ試したみたいと思います.初回は,とりあえず動作させることと,日本語の質問応答を実装してみました.東大松尾・岩澤研究室LLM開発プロジェクトの大規模言語モデルTanuki-8B・Tanuki-8x8Bが Hugging Faceにて公開されています.GPT3.5前後のスコア値をもつ日本語で高い能力のLLMの実現を目指したモデルで,8Bパラメータの**Tanuki-8B-dpo-v1.0** と更に大規模な 8x8Bパラメータの **Tanuki-8x8B-dpo-v1.0** の2種類があるようです.それぞれ4bit,8bit量子化モデルも用意されており,Tanuki-8Bはローカル環境やGoogle Coaboの無料枠でも十分高速に動作しそうなモデルです.RTX3060(12GB)でも高速に動作しました.
### 利用モデル
https://huggingface.co/weblab-GENIAC/Tanuki-8B-dpo-v1.0
### 利用モデルの公式アナウンス
:::note
公式より
[Python] FirebaseのTimeoutを設定 (Cloud Functions)
## 本記事の内容
Firebase Cloud FunctionsをPythonで実装する際に設定出来る**タイムアウト**の解説を行います。
Firebaseが公開している公式ドキュメントと、実際のソースコードを見ながら解説をしていきます。## 背景
先日、生成AIのAPIを用いた関数をFirebseのCloud FunctionsにデプロイしてWebアプリを作っていました。デプロイした関数には、実行時間がかかる処理を行っていたため、タイムアウトエラーになってしまいました。タイムアウトの時間を変更する方法が気になり、調べてみようと思いました。
## 目次
– [1. デコレータとは](#1-デコレータとは)
– [2. Timeoutの設定](#2-timeoutの設定)
– [3. 実装](#3-実装)
– [4. まとめ](#4-まとめ)## 1. デコレータとは
デコレータとは**関数やクラスの前後に特定の処理を追加出来る機能**です。
Pythonでは、関数やクラスの定義する前に`@`をつけることで設定出来ます。“`Python sample.py
WSL2 Python をつかって ROS2 をあつかってみよう
このドキュメントでは ROS2 で Python をつかいロボット(亀)を動かす方法を解説します。さっそくはじめましょう。
このドキュメントは以下の記事を事前に読み、作業を終えていることが前提として記述されています。
– WSL と ROS2 のセットアップ
https://qiita.com/GAI-313/items/fd393ca505da814692d6
– VScode のインストールとセットアップ
https://qiita.com/GAI-313/items/7635a8de16fd96f86143#vscode-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
– WSL と VScode の連携
https://qiita.com/GAI-313/items/76
【Flask】アプリ全体で API Keyを安全に取り扱う方法
# app.config[“API_key”] と current_app[“API_Key”]を活用
## 1. アプリ全体で API Keyを使えるようにする
– Flaskの g に APIキー のようなアプリ全体で利用される情報を保存することは推奨されない。
– g はリクエストごとにスレッド固有のデータを一時的に格納するためのものであり、APIキーのようなグローバルな設定を格納する用途には適していない
– APIキーは、環境変数や設定ファイル (.env, config.py など) で管理し、アプリケーションが起動した際に一度ロードして使用するのが一般的
– .envを使う方がベストプラクティスとして標準的な手法なっている
– 環境変数にすることで、APIキーなどの機密情報をソースコードから分離することで、誤って公開してしまうリスクを大幅に減らすメリットがある
– クラウドプロバイダーが提供する シークレット管理サービス(例:AWS Secrets ManagerやGoogle Cloud Secret Manager)を使用するもある
– Flaskの app.con
競馬予想AIを作りたい(AI学習編3)
# これまでの話とこれからの話
[前回](https://qiita.com/lefirea/items/f12a7625bc353196d68e)回収率100%超えて喜んでたけど、的中率を求めると酷いことが分かってしまった。
なんと単勝的中率1%!
つまり、手堅いのを外し続けて、まぐれ大当たりで結果的にプラスになってただけだった。
そこで、的中率も重視してより良いAIを作りたいのが今回の話。# 要約
ランキング学習を取り入れることで、単勝的中率80%を達成した。
回収率は据え置きなので問題なし。
ただ、どうせなら三連単/複の的中率もせめて50%は超えたいので今後も調整していく。# 今回のアプローチ
今までは分類問題として解いていた。(今回も分類問題ではある)
しかし分類問題の中にも色々あるようで、一般的に行われる分類問題は「ポイントワイズ法」と呼ばれる。
これはワンホットベクトルのように一つだけ立ってるものを当てるような話。
点を予測する。対して、ランキング学習は順序を予測する。
ざっくり概要としては、1, 2, 3の並びを予測するために、考えられる並び順から一つ選ぶよう
FireDucks vs Pandas 速度勝負、データサイズ500万行あたりが勝負の分かれ目
### **user**:
ChatGPT先生、先日の「FireDucksの速度がPandasとほとんど変わらなかった件」について、覚えてますか? 記事投稿したら早速、開発者と思しき方からご連絡があったんですよ。
—
### **assistant**:
おおお、それはめちゃくちゃ面白そうな展開やね!開発者さまから直接連絡があるなんて、なんか興奮するわ!具体的には何て言われたんや?あるいは、どんな反応があったんか教えてくれるかな?
—
### **user**:
引用させていただきますと
> 検証コードにおいてFireducksがpandasよりも速くならなかったのは
> read_csv()のencodingの引数がFireducksで(10/9日現在)未対応なのが理由だと思います.> (encoding引数もすぐに対応いたしますので,少しお待ちください)
> extract関数の
> df = pd.read_csv(filename, encoding=”utf-8″)
> を
> df = pd.read_csv(filename)
> としていただくと
【Qiita Web API①】Pythonを使ってQiita APIの記事情報を取得してみた!
# はじめに
Qiita APIを使うことで、タグやタイトルから記事を検索したり、データを効率的に活用できるます。本記事ではPythonを使って、Qiita APIの記事情報を取得する方法を解説しております。# Qiita APIとは
Qiitaが提供するWeb APIで、Qiitaのプラットフォーム上にあるさまざまなデータや機能にアクセスするためのインターフェースです。Qiitaは、プログラミングや技術に関する情報を共有するためのコミュニティであり、APIを利用することで、記事に関する様々な情報を取得することができます。# Qiita APIでできること
**記事の取得**
Qiitaに投稿された記事を検索したり、特定の条件に基づいて取得することができます。**ユーザー情報の取得**
Qiitaユーザーのプロフィール情報やフォロワー、フォローしているユーザーの情報を取得できます。**タグ情報の取得**
Qiitaで使用されているタグの情報を取得し、どのタグがどれだけの数の記事に関連しているかを分析することができます。**検索機能**
キーワードやタグを使用して、関
作業メモ: uvからtestpypiにpublish
# はじめに
uvで作成したpythonライブラリをtestpypiにアップロードしたときの作業メモです。以下の3ステップで行けました。簡単でした。
– uv init testlib –lib
– uv build
– uv publish –publish-url https://test.pypi.org/legacy/ –token TEST_PYPI_TOKEN# 環境
– M1 macOSで作業しました。
– uv(バージョン0.4)をインストール済みとします。
– testpypiのアカウント作成済みとします。
– testpypiのトークンを作成済みとします。# 補足
– pypiにuploadするときは、–publish-urlを省略し、tokenはUV_PUBLISH_TOKEN環境変数に登録するとよいです。
– pipからtestpypiを試したい場合は以下
– mkdir test && cd test && uv venv && source .venv/bin/activate && uv pip install ipython #
Herokuに代わるタダのDiscord Botのホスティング先まとめ
無料でDiscord Botを動かせるサービスを参考記事付きでまとめました。
Discord Botだけではなく動的サイトやAPIも動かせます。
HerokuやRailwayの有料化に困っている人にどうぞ。
料金体制はよく変わるので使う前に自分で調べてください。なお、この記事ではPythonのホスティングサービスを紹介しているため、Pythonがホスティングできないサービスは紹介していません。([Deno Deploy](https://deno.com/deploy)や[Genezio](https://genezio.com)、[Encore](https://encore.dev)など)
# 準備
認証で使うことが多いのでクレジットカードやデビットカードを準備しましょう。
ないなら、[バンドルカード](https://vandle.jp)や[kyash](https://www.kyash.co)などのプリペイドカードを作りましょう。
~~バンドルを作るなら招待コードに rxuauf を入力してもらえると嬉しい~~
1ドル程度入ってないと認証できないことがあります。
たま
Windows Python JupyterLab 仮想環境 構築手順
WindowsでのPython仮想環境の構築とJupyter Labの使用方法を以下に示します。手順はMacの場合とほとんど同じですが、WindowsのコマンドプロンプトやPowerShellでのコマンドが少し異なります。
### 手順: Windowsで仮想環境を作成しJupyter Labを利用する方法
1. **任意のディレクトリに移動**
まず、WindowsのコマンドプロンプトやPowerShellを開き、プロジェクト用のディレクトリに移動します。“`cmd
cd C:\path\to\your\project
“`上記のコマンドで、プロジェクトのディレクトリに移動します。ここでの`C:\path\to\your\project`は、あなたが仮想環境を作成したいフォルダパスに置き換えてください。
2. **仮想環境の構築**
次に、以下のコマンドを実行して仮想環境を作成します。“`cmd
python -m venv venv1
“`このコマンドにより、`venv1`
Dockerでローカル日本語LLMの構築
# はじめに
最近は量子化が流行っているそうなので、日本語の軽量LLMをDockerで動かしたいなと思いました。
ツールの詳しい操作説明は割愛します。実装やLLMは下記記事を参考にしました。
ローカルLLMや使用しているLLMについての分かりやすい説明が書いてあるので皆さんも読んでみて下さい。https://qiita.com/kenta1984/items/7233f8ec9d256f4fa4f7
# 必要な環境と前提条件
### ハードウェア要件
・特になし
(GPUを積んだPCが望ましいと思いますが、あまりにスペック低くなければCPUでも問題なく動くと思います。)
### ソフトウェア要件
・Dockerがインストールされていること
・NVIDIAドライバーが正しくインストールされていること(GPUを使用する場合)
・NVIDIA Container Toolkit(旧nvidia-docker2)がインストールされていること(GPUを使用する場合)# モデルの準備
今回は軽量日本語LLMで有名なElyza社の[Llama-3-ELYZA-JP-8B-AWQ]
統計学
## 1. **記述統計と推測統計**
### 記述統計 (Descriptive Statistics)
記述統計はデータの特性を数値やグラフでまとめる手法で、以下のような方法が含まれます。– **平均値 (Mean)**: データの中心的な傾向を表す指標で、すべてのデータを合計し、データ数で割った値。
– **中央値 (Median)**: データを小さい順または大きい順に並べたときの中央の値。
– **分散 (Variance)**: データの散らばり具合を表す指標で、平均値から各データ点がどれだけ離れているかの二乗平均。
– **標準偏差 (Standard Deviation)**: 分散の平方根で、データの散らばり具合を元のデータの単位で表す。これらの手法を用いることで、データの基本的な性質(中心傾向やばらつき)を理解しやすくなります。
“`“`
### 推測統計 (Inferential Statistics)
推測統計は、サンプルデータを用いて母集団の特性を推定し、仮説を検証するための手法です。以下のようなアプローチがあります。– **区間推定
notionに論文を登録すると数式もふくめよしなに翻訳してくれるフローを構築した
# はじめに
論文は読んでいますでしょうか。
私は英語がからっきし駄目なので、億劫で読みたい論文が溜まってしまうことがしばしばです
そんな自分でも、少しでも気楽に論文を読めるように、NotionにPDFリンクを貼ると、自動的にChatGPTが翻訳してくれる仕組みを作りました。![{86449148-2F85-462E-9CC6-718545B14965}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2950973/0e0df6ae-3822-c9ee-1fe5-fd72c2cca96a.png)
↑ こんな感じのページが自動で作られますPDFを翻訳してくれるサービスはそこそこあるのですが、数式が入ってくるとポンコツになるものが多く、またフォーマットもPDFではブラウザで読みにくいです
そこで、Notion上で全ての内容をオブジェクトとして再構成し、数式や画像、表も含めて読みやすい形式にしましたまず初めに「全体の流れ」でこのフロー全体を説明し、次に「PDFをどうやって和訳したのか」でNot
アナログ回路におけるMOSトランジスタのキャラクタライズ
“`py
import matplotlib.pyplot as plt
import numpy as np# Define variables in milliSiemens
VGS1 = 0.2
Veff = 0.2
VGS2 = VGS1 + 0.23
VGS3 = VGS2 + Veffgm1 = 0.04 # in milliSiemens
gm2 = gm1 + 0.6 # in milliSiemens# Generate VGS values for the parabolic curve
VGS_parabola = np.linspace(VGS1, VGS2, 100)
# Create a parabolic curve from (VGS1, 0) to (VGS2, gm1)
a = (gm1 – 0) / ((VGS2 – VGS1) ** 2) # Coefficient for parabolic equation y = a*(x – VGS1)^2
gm_parabola = a * (VGS_parabola – VGS1
自動でデータ分析!OpenAI API×Langchain×Streamlitを利用した「データ分析EDAアプリ」の開発
## 概要
本記事では、CSV形式のデータと可視化したい内容のプロンプトを入力するだけで、簡単にEDA(探索的データ分析)を行うことができる「データ分析EDAアプリ」を開発した手順とポイントを紹介します。このアプリケーションは、OpenAI APIとLangchain、Streamlitを組み合わせて開発しました。可視化ライブラリとしては、matplotlibを活用しています。データコンペに参加する方や、データをすばやく把握したい方に向けた効率的なツールです。
## 開発経緯
開発した経緯としては、何か生成AIを使ったアプリを開発したいと思ったのと、私はよくkaggle等のデータ分析コンペに参加するのですが、毎回コンペの際にEDAのためのコードを記載する手間を省いて早くモデルの作成、予測、評価を行いたい!と思っていたことでこちらのアプリを作ろうと思いました!## 使用技術
– **言語**: Python
– **ライブラリ**:
– langchain
– langchain_core
– langchain-openai
– opeanai
– s
LLMに短歌を詠ませる
『AIは短歌をどう詠むか』(講談社 (2024/6/20))という、とても面白い本を読んだ。
https://amzn.asia/d/4Uwobm7私自信も生成AIまわりのことを生業にしていて、しかも短歌を趣味にしているため、まさにドンピシャな内容だった。(さらに著者の方は人文系分野に興味を持ちつつ大学まで応用数学を研究され、社会に出てから技術系に進んだという経歴も私と一致している…。)
この本の著者のプロジェクトでは実際にAIに短歌の定型を満たした詩を詠ませるところまでを実現し、そこから進んで「面白い」歌とは何かというところまで探究している。
この本には感銘を受けたので、私も少し目的を変えつつ、AIに短歌を詠ませることができるかを試してみた。
また、この本での研究についての以下の論文も適宜参照した。
– [モーラを考慮したFine-tuningによる口語短歌生成[浦川 et al., 2022]](https://www.anlp.jp/proceedings/annual_meeting/2022/pdf_dir/D6-2.pdf)
– [RLHFを用いた「面白い」短
個人的な備忘録:Lambda関数でのいろいろな処理について
## 全体コード
“`py
import boto3def lambda_handler(event, context):
ec2_client = boto3.client(‘ec2’)
elb_client = boto3.client(‘elbv2’)# 監視対象のEC2インスタンスのID
instance_ids = [‘i-0123456789abcdef0’, ‘i-0abcdef1234567890’]# インスタンスの状態を確認
response = ec2_client.describe_instances(InstanceIds=instance_ids)instances_stopped_count = sum(
1 for reservation in response[‘Reservations’]
for instance in reservation[‘Instances’]
if instance[‘State’][
生成AIを活用したアバターの可能性: HeyGenで未来のインタラクティブ体験を試す
![autumn.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/4e81b0b5-ff0e-60d2-c8a9-95d26e94e839.jpeg)
# はじめに
最近では、生成AIを活用したさまざまなサービスが続々と登場し、これらを組み合わせることで、今は想像もつかないような革新的なアイデアが生まれる可能性を感じています。今回はその中でも、**HeyGen**というサービスを試してみたので、ご紹介します。**HeyGen**は、撮影した動画や音声データをもとに、AIがアバターを通じて発話したり、インタラクティブな対話が可能になるプラットフォームです。私は特に、将来的にコールセンター業務などをアバターを使ったチャット形式に置き換えることで、コスト削減が実現できるのではないかと期待しています。
今回は、自分の動画と音声を基にHeyGenを使い、私が実際に発したことのない言葉をアバターに話させることに挑戦してみました。
以下が**HeyGen**のサイトです。
https://