- 1. Djangoで新しいプロジェクトを作成する方法
- 2. Pythonの最悪なところ
- 3. Kinesis data streams、lambda、S3を活用したWebアプリのリアルタイムデータ解析基盤構築
- 4. (Python)asyncio試す
- 5. Pymongo count()について
- 6. ABC360回答メモ
- 7. PNGにメタデータを埋め込む
- 8. Kaggle AIMO参戦記 – 対話型数学学習を目指したLLM推論プロセス可視化アプリ開発
- 9. python勉強記録②
- 10. LCELのRunnableつなげ方基本と実例[LangChain-Python]
- 11. Pythonのsecrets乱数はなぜ安全なのか
- 12. ナイトツアーをPythonで解いてみる
- 13. 研究で使っている保存/読出しユーティリティメソッド
- 14. Python_Googleアラート_240704
- 15. 【Python】Edge操作の環境構築から基本操作まで
- 16. Gemini APIを使ってPower Appsのドキュメント作成をしてみる
- 17. 続・RAGの練習。HyDEを試して見る
- 18. SGF形式の棋譜をKIF形式に変換するだけのサービスをFlet>Fly.ioでデプロイ
- 19. 【Python】複数のシェルスクリプトのAPIコールを1コマンドですべて実行させる方法
- 20. DataFrameの高速処理: apply 関数 vs np.where
Djangoで新しいプロジェクトを作成する方法
## Djangoで新しいプロジェクトを作成する方法
今回はDjangoを使って新しいプロジェクトを作成する手順を紹介します。DjangoはPythonで書かれた高機能なWebフレームワークで、迅速にWebアプリケーションを開発するのに非常に便利です。この記事では、基本的なDjangoプロジェクトのセットアップ手順を説明します。### 前提条件
Pythonがインストールされていること
### 1. Pythonのインストール
まず、Pythonがインストールされていることを確認します。インストールされていない場合は、公式サイトからインストールしてください。“`bash
python –version
“`
### 2. 仮想環境の作成
プロジェクトごとに仮想環境を作成して依存関係を管理します。仮想環境を作成するために、以下のコマンドを実行します。“`bash
python -m venv myprojectenv
“`
仮想環境をアクティベートします。Windowsの場合:
“`bash
myprojectenv\Scripts\activate
“`
Pythonの最悪なところ
#### どう考えても意図していない文字列の連結
“`
arr = [
“line 1”,
“line 2”
“line 3”
]
print(arr)
“`
“`
[‘line 1’, ‘line 2line 3’]
“`
誰が望んでるんだよこの挙動。最後の要素はカンマを付けても付けなくてもいいのになぜこんな挙動に?#### 分かりにくすぎるコンマ
“`
x = very_long_method_name(very_long_argument1, very_long_argument2),
print(x)
“`
“`
(x,)
“`見逃しやすいコンマが加わっただけでタプルにするな。動的型だから実行時まで気づかないんじゃ。せめて括弧を要求しろ。
Kinesis data streams、lambda、S3を活用したWebアプリのリアルタイムデータ解析基盤構築
# はじめに
本記事では、AWSの各種サービス(S3、ECS Fargate、ECR、IAM、Lambda、Kinesis Data Streams)を活用して、Webアプリのリアルタイムデータを収集・解析するデータ分析基盤の構築方法について説明します。現代のWebアプリケーションは、ユーザーの行動やシステムの状態をリアルタイムで監視・分析することが求められており、この基盤はそのニーズに応えるものです。
![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/07644df9-973b-fd6e-3207-f6e1b2a76410.png)
以下の作成したリポジトリです。
https://github.com/sugiyama404/practice_kinesis_data
## アーキテクチャの概要
+ Webアプリケーション: ユーザーの行動やシステムイベントをKinesis Data Streamsに送信
+ Kinesis Data Streams: リアルタイム
(Python)asyncio試す
# 初めに
並「行」処理扱うことになったので備忘録として残しておきます。# コード
“`
import asyncio
import timeasync def hoge():
print(‘タスク1です’)
# asyncio.sleep()は指定時間だけタスクを中断し、その間他のタスクに制御を握らせるタスクです
# これによりタスク1が2秒間中断されタスク2が走ります
await asyncio.sleep(2)
print(‘タスク1でした’)async def fuga():
print(‘タスク2です’)
for l in range(100000000):
n = l
print(‘タスク2でした’)async def main():
print(‘開始’)
start = time.time()
# create_taskにコルーチンを渡すとタスクになります
# taskは定義と同時にスケジューリングされますが、実行されるタイミングはイベントループ次第です
task1 = asyncio.create_task(hoge(
Pymongo count()について
# Pymongoのcount()
いろいろなサイトを参考にPymongoを触っていたところ、以下のコードが動作しない。“`python
device = mycol.find({‘name’ : ‘Moore’}count()
“`
これを実行すると、Cursorにはcount()などという関数は存在しないと言われる。## count_document()という存在
どうやらアップデートでMongo DBからcount()は消失し、count_document()が生まれたらしい。“`python
device = mycol.count_documents({‘name’ : ‘Moore’})
“`そもそも記法としてfind()の後にカウントすることなかったようですが、これで解決。
ABC360回答メモ
# 0.はじめに
レギュラーコンテストは自分にしては調子よかったので
ABCもレートアップを目指して参戦。
なんとかDまでクリアしてレートアップをどきどきして待っていたら
なにやらレート計算に時間がかかるらしく、ドキドキしながら
しばらく待つこととなりました。
水曜日にやっとレートが更新され、+24の803と、緑に復帰できました。# 1.A – A Healthy Breakfast
簡単なようで意外とすっと解けない問題でした。
時間かけるのも何なので、素直に、1文字目から見ていって、
Rがきたら、フラグを立てる
Mが来たときに、フラグが立ってればYesたってなければNoを
出力して終了でACでした。https://atcoder.jp/contests/abc360/submissions/55048492
# 2.B – Vertical Reading
どう考えてもCより難しいよなーと思える問題。
問題文も理解しづらく、レート算出が遅れる原因ともなったとのこと・・・。
やっと読み解いた内容としては
文字列Sをw文字ごとに改行して作った
PNGにメタデータを埋め込む
PNG 画像に文字列データを埋め込み、また、そこから文字列データを読み取ります。
メタデータの収容エリアには `tEXt` チャンクを使います。JPEG なら Exif あるいはヘッダコメントに相当するものです。
処理は、Python の画像処理ライブラリ [Pillow/PIL](https://pillow.readthedocs.io/) から行います。
##### PNGファイルを読む
まず PNG ファイルを読みます。Pillow で画像ファイルを開くには `PIL.Image.open()` です。
“`python
>>> from PIL import Image
>>> img = Image.open(‘240704-qrcode.png’)
“`##### メタデータを用意する
PNG メタデータの操作には [`PIL.PngImagePlugin.PngInfo`](h
Kaggle AIMO参戦記 – 対話型数学学習を目指したLLM推論プロセス可視化アプリ開発
# はじめに
この記事は、大規模言語モデル **Gemini 1.5 Pro** を用いて執筆しました。生成してもらった文章をベースに加筆・修正しています。
近年、AI技術、特に大規模言語モデル(LLM)の発展は目覚ましく、様々な分野で注目を集めています。特に教育分野においては、AIによる個別最適化学習や、学習者の理解度に合わせた柔軟な対応などが期待されています。
私は、以前から **「学習者がAIとの対話を通じて、自身の思考プロセスを深掘りできるようなシステム」** の構築を構想してきました。LLMの登場により、その実現可能性が飛躍的に高まったと感じています。その可能性を探るため、そして構想を実現に近づけるために、Kaggleで開催されたAI Math Olympiad (AIMO) コンペティションに挑戦しました。
本記事では、AIMOコンペティションへの挑戦をきっかけに、**数学特化LLMを用いた対話型数学学習システム**の開発を目指し、その第一歩として**LLMの推論プロセスを可視化するWebアプリケーション**を開発した過程を紹介します。
# 2. AIMOコンペテ
python勉強記録②
python勉強記録①で取得したデーターをCSVへ出力し、Streamlitで可視化する。
“`python:chart.py
import streamlit as st
import pandas as pd# CSVファイルの読み込み
df = pd.read_csv(‘out.csv’)# タイムスタンプをdatetime型に変換
df[‘timestamp’] = pd.to_datetime(df[‘timestamp’])# スライダーで期間を指定
start_date, end_date = st.slider(
“期間を選択してください”,
min_value=df[‘timestamp’].min().to_pydatetime(),
max_value=df[‘timestamp’].max().to_pydatetime(),
value=(df[‘timestamp’].min().to_pydatetime(), df[‘timestamp’].max().to_pydatetime()),format
LCELのRunnableつなげ方基本と実例[LangChain-Python]
PythonでLangChain書いてると、LCELの使い方で最初に悩みました。チュートリアルに書かれている内容から外れた場合、どう書けばいいのかわからなかったです。
下記チートシートを参考にLCELでのRunnableのつなげ方を理解しました。https://python.langchain.com/v0.2/docs/how_to/lcel_cheatsheet/
# 環境
Python3.12.2 で以下のパッケージを使っています(Jupyterは省略)。|Package|Version|備考|
|:-:|:-:|:–|
|langchain|0.2.6||
|langchain-core|0.2.10||
|pygraphviz|1.13|フローの画像描写するなら必要|:::note warn
pygraphvizを使うために`brew install graphviz`でgraphvizをMacにインストールしています
あまり整理していない仮想環境なので必要なパッケージ漏れているかも
:::# つなげ方
## 1. 単一
単一 Runnable なので接続
Pythonのsecrets乱数はなぜ安全なのか
Pythonで疑似乱数生成というと[random](https://docs.python.org/ja/3/library/random.html#module-random)モジュールが浮かびます。これは一様分布や正規分布など、種々の分布に従った乱数を生成することができ便利なのですが、実はセキュリティ的には強い乱数ではないようです。
パスワードやセキュリティトークンを生成するときには、暗号学的に強い乱数を生成できる[secrets](https://docs.python.org/ja/3/library/secrets.html#module-secrets)モジュールを使うことが推奨されています。### 乱数生成方法の違い
secretsモジュールの[解説](https://docs.python.org/ja/3/library/secrets.html#random-numbers)には以下のように書かれていました。
> secretsモジュールは OS が提供する最も安全な乱雑性のソースへのアクセスを提供します。この記述について、具体的には、`os.urando
ナイトツアーをPythonで解いてみる
## はじめに
– 深さ優先探索がずっと苦手だったので,使って実装してみようと思いました## ナイトとは
– チェスの駒の一種
– ナイトの動き![ナイト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3768359/43858618-f3f3-2c00-fcc5-d0767f90ed50.png)
– ナイトは以下のicooonサイトより引用
– https://icooon-mono.com/12796-%e9%a6%ac%e3%81%ae%e3%83%95%e3%83%aa%e3%83%bc%e3%82%a2%e3%82%a4%e3%82%b3%e3%83%b3/## ナイトツアーとは
– n×nの盤面が与えられた際に,右下隅から開始してナイトの動きですべてのマスを一回ずつ通る経路を考えるパズル## 深さ優先探索
– 解の探索アルゴリズムの一種
– 進めるところまでできる限り深く探索
– 解が見つかれば終了
– 解が見つからずこれ以
研究で使っている保存/読出しユーティリティメソッド
研究をしていると,実験結果や実験条件をまとめたオブジェクトを保存/読出しすることが多々あります.私は特に次のようなデータを取り扱うことが多いです.
* 実験条件や実験結果をまとめた構造化データ(JSON/.json)
* 大量の要素を持つ配列(Pickle/.pkl)
* Matplotlibグラフ(PDF/.pdf)そのため,これらを保存/読出しする共通のメソッドを作ってみました.
## 機能
1. いかなる形式・拡張子のデータも`save(obj,fn)`で保存,`load(fn)`で読出し.データの形式は拡張子で判断.
1. 既にファイルが存在するのに保存しようとすると,確認のプロンプトが出る←**結構重宝する**## 使用例
“`python
from myautils import *
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 4, 9])
save(fig, “Experiment.Hoge_vs_Fuga.pdf”)
“`##
Python_Googleアラート_240704
### Python初心者でも配布パッケージが理解できる! 『初めてのPython配布パッケージ作成』発行 技術の泉シリーズ、7月の新刊 (2024年7月3日) – エキサイトニュース
Python初心者向けに、配布パッケージ作成を解説した書籍「初めてのPython配布パッケージ作成」が、技術の泉シリーズとして7月に発売されます。Wheelファイルの作成に焦点を当て、モジュール、パッケージ、仮想環境などの基本概念から、GitHub Actionsを使った自動化、ソースコードの難読化、PyPIを用いた配布手順までを解説しています。Node.js経験者や、Pythonコードを他の環境で実行したい方におすすめです。#### https://www.excite.co.jp/news/article/Prtimes_2024-07-03-5875-5986/
—
### 人事部向けコラム「Python基礎試験の受験者の声」 – CNET Japan
CNET Japanで、Pythonエンジニア育成推進協会の吉政忠志氏が人事部向けコラムを連載中。Python試験は累計受験者5万人を超
【Python】Edge操作の環境構築から基本操作まで
Python環境を構築後、anacondaをインストールする。
●Seleniumインストール
pip install selenium
●beautifulsoup4インストール
pip install beautifulsoup4※下記の内容で、Edge操作ができた
#webdriverのインポート
from selenium import webdriver
♯byを使用するためにインポート
from selenium.webdriver.common.by import Byimport time
import pandas as pd
import os
import datetime#Edgeを起動する
browser = webdriver.Edge()
browser.implicitly_wait(3)#開くURLを指定
url_login = “https://172.16.0.1:4444”
browser.get(url_login)
time.sleep(3)#接続がプライベートではありませんのページ処理
browser.find_ele
Gemini APIを使ってPower Appsのドキュメント作成をしてみる
# [Gemini 1.5 Pro](https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/)
2Mコンテキストに対応しているという[Gemini 1.5 Pro](https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/)。
https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/
どれだけの容量なのか・・・と調査してみると[OpenAIのHP](https://openai.com/api/pricing/)が参考になりました。
> You can think of tokens as pieces of words used for natural language processing. For Eng
続・RAGの練習。HyDEを試して見る
前回(https://qiita.com/mebi/items/1f29335a7afb9e92c440 )、生成AIを使った検索でRAGの実装しましてみました。
今回は、RAGを改良したHyDEという手法をためして見たいと思います。
—
# HyDEの仕組み
RAGは、
予め検索対象ドキュメントを生成AIを通しておき、Embeddingというベクトル情報を作成しておきます。
そして、ユーザー入力に対して、Embeddingを作成します。
2つのEmbeddingが近しい(差が0に近い)ドキュメントを検索結果として、そのドキュメントをもとにユーザー質問へ答える・・・というものでした。ここで、ユーザーは「質問」しているのにRAG側では「回答」を探しており、
そもそも「質問」と「回答」は意味的に近しいのか?という疑問が生まれます。そしてそのあたりは、生成AIの元データだったり学習のさせ方に依存んしていたり、実質ブラックボックスの状態なので知るすべがありません。
HyDEではこの疑問に答えます。
HyDEは、ユーザーからの「質問」に対して、一度「架空の、質問の答えとな
SGF形式の棋譜をKIF形式に変換するだけのサービスをFlet>Fly.ioでデプロイ
## はじめに
めっちゃ簡単にFletで作ったappをfly.ioでデプロイするだけ。それだけ。
DBもAWSもDockerの知識もいらない。### きっかけ
とあるオンライン将棋サイトでは棋譜がSGF形式で出力される。“`:SGF形式
1. P2g-2f P3c-3d 2. P2f-2e B2b-3c…
“`棋譜解析するにはKIF形式のが都合がよい。
じゃあそういうサイト作ってしまえ。で作ったのでそのメモ。
## やってみるか
1. sgfのテキストをkifのテキストに変換する関数をつくる ← ここは簡単
1. Fletで見た目を作る ← こだわると時間溶ける
1. fly.ioでデプロイ ← デプロイって言葉、1回使ってみたかった### 関数編
P→歩、+S→成銀、2f→2六 こんな感じに置換するだけ### GUI編
`ft.TextField`(入力・出力)
`ft.TextButton`(変換・コピー)
以上### デプロイ編
https://flet.dev/docs/publish/web/dynamic-website/hosti
【Python】複数のシェルスクリプトのAPIコールを1コマンドですべて実行させる方法
# 概要
とあるディレクトリにある複数のシェルスクリプトファイルを1コマンドで勝手に一つずつ実行させていくコードを書いたので紹介します。# サンプルコード解説
“`py
import subprocess
import os# スクリプトが存在するフォルダのパス(現在のディレクトリとしています)
folder_path = ‘./’scripts = sorted([files for files in os.listdir(folder_path) if files.endswith(‘.sh’)])
# APIのエンドポイント
api_endpoint = ‘http://localhost/api’for script in scripts:
script_path = os.path.join(folder_path, script)
print(f”Executing {script}…”)
subprocess.run([‘sh’, script_path, api_endpoint])
print(f”Finish
DataFrameの高速処理: apply 関数 vs np.where
データサイエンスのプロジェクトにおいて、効率的なデータ処理は極めて重要です。Pandasのapply関数とNumPyのnp.whereは、データフレームの操作においてよく使われる方法ですが、その処理能力には大きな違いがあります。この記事では、具体例を交えて両者の性能差を詳しく見ていきます。
# apply 関数とは?
apply 関数は、Pandas DataFrameの行や列にカスタム関数を適用するための方法です。非常に柔軟で、複雑なロジックを簡単に実装できますが、Pythonのネイティブコードで動作するため、処理速度が遅くなることがあります。例:apply 関数の使用
以下のコードは、DataFrameの各行に対して条件を評価し、新しい列を追加する例です。“`python
import pandas as pd# サンプルデータフレームを作成
df = pd.DataFrame({
‘A’: [10, 20, 30, 40, 50],
‘B’: [1, 2, 3, 4, 5]
})# apply関数を使って新しい列を追加
df[‘C’] = df