Python関連のことを調べてみた2023年09月29日

Python関連のことを調べてみた2023年09月29日
目次

OpenAI APIのfunction callingを使ってみる

## はじめに

ChatGPTを擁するOpenAI社のAPI「**OpenAI API**」を利用したアプリ制作を行う中で、新しい機能である「function calling」を利用する機会がありました。
今回は備忘録として使い方を書いていきます。

## function callingは何が出来るのか

今年の6月頃にOpenAI APIに搭載された新機能で、ざっくりいうと「ユーザーの入力内容に応じてやってほしい処理をAIが自動で判別して実行してくれる」ものです。

事前に「この場合はこんな操作をしてほしい」という設計書のようなもの(関数)を作成します。
AIにユーザーが入力した文章を渡す際に、作成した関数を同時に渡すことで、AIが設計書の内容を理解してその通りの操作を行ってくれます。

簡単なフローチャートを以下に示します。

![flow.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535910/73676b94-d6f9-49d5-1a8a-096bb44b536a.pn

元記事を表示

[Django REST Framework] pytest-freezegun?を使用して意図的に時間を経過させよう

## 概要
pytest-freezegunの使い方を紹介する
## 目的
pytest-freezegunの基本的な使い方を知ることができる

## 使用技術

“`
python = 3.11.2
Django = 4.2.3
djangorestframework = 3.14.0
pytest = 7.3.1
factory-boy = 3.2.1
pytest-freezegun = 0.4.2
“`

### テストの概要・APIの仕様について
今回はログアウトAPIを使用します
ログインすると1時間のセッションが保持されるはずですが、
本当に1時間でセッションの有効期限が切れるのかをテストします
セッションが切れていればログアウトAPIを叩いた時認証エラーとなります

※ログインには`client.login()`(返り値がbool)を使用しているので判定には`user.is_authenticated`を使用せず、ログアウトAPIを使用しています

## 早速みてみましょう

まずはライブラリをインストールしましょう
“`
$ pip install pytest

元記事を表示

Amazon BedrockのAPIをPythonアプリから呼んでみよう。LangChainにも挑戦!

昨晩時点では未対応だったPython用のAWS SDK(boto3)もようやくBedrockに対応したようです!

https://github.com/boto/boto3/blob/develop/CHANGELOG.rst

※宇宙最速でAPIを叩いたQiita記事は @moritalous さんでした!?

https://qiita.com/moritalous/items/213aab518bb5f1de1d3f

# AWSのPython SDK(boto3)から叩いてみる

まずBedrockでAPIを利用したい基盤モデルへのアクセスを許可しておきます。こちらの記事を参照。

https://qiita.com/minorun365/items/79c2fc1d2afe82aad2af

そして当該AWSアカウントへのCLIアクセスができるよう、あなたのPCにAWSプロファイルの認証情報を設定しておきます。こちらを参照。

https://qiita.com/minorun365/items/7ee8bb1478bfbceb1d1b

そして適当な作業用ディレクトリ

元記事を表示

Pythonのrequestsライブラリが読み込んでいるrootCA証明書の場所を確認するワンライナー

# はじめに
プロキシ環境下などにおいて、独自のrootCA証明書を読み込ませずにPythonでrequestsを行うとSSL証明書エラーが発生する。

requestsが読み込んでいる証明書に独自のrootCA証明書を追記すれば解決できるのだが、毎回読み込んでいる証明書の場所と確認方法を忘れてしまうので、自分向けの備忘として残しておく。

## 環境
Python 3.11.2

# 読み込んでいる証明書のパスを確認するワンライナー
pythonコマンドにcオプションをつけると、囲った中でコード実行ができる。
“`shell
$ python -c “import requests; print(requests.certs.where())”

# /usr/local/lib/python3.11/site-packages/certifi/cacert.pem ※Linuxはこんな感じ
# C:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python311\Lib\site-packages\certifi\cacert.pem

元記事を表示

【1からのデータ構造とアルゴリズム】Cocktailソート

“`py
import random
from typing import List
“`

“`py
def cocktail_sort(numbers:List[int]) -> List[int]:
len_numbers = len(numbers)
swapped = True
start = 0
end = len_numbers – 1
while swapped:
swapped = False

for i in range(start, end):
if numbers[i] > numbers[i+1]:
numbers[i], numbers[i+1] = numbers[i+1], numbers[i]
swapped = True

if not swapped:
break

swapped = False
end = end – 1

for i in range(end-1, start-1, -1):

元記事を表示

【1からのデータ構造とアルゴリズム】Bubbleソート

“`py
import random
from typing import List
“`

“`py
def bubble_sort(numbers: List[int]) -> List[int]:
len_numbers = len(numbers)
for i in range(len_numbers):
for j in range(len_numbers – 1 -i):
if numbers[j] > numbers[j + 1]:
numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]
return numbers

if __name__ == ‘__main__’:
nums = [random.randint(0, 1000) for _ in range(10)]
print(bubble_sort([nums]))
“`

[[321, 526, 193, 882, 5, 799, 934, 217, 491, 755]]

元記事を表示

【1からのデータ構造とアルゴリズム】Bogoソート

“`py
import random
from typing import List
“`

“`py
def in_order(numbers):
return all(numbers[i] <= numbers[i+1] for i in range(len(numbers)-1)) def bogo_sort(numbers): while not in_order(numbers): random.shuffle(numbers) return numbers if __name__ == '__main__': nums = [random.randint(0, 1000) for _ in range(10)] print(bogo_sort([nums])) ``` [[890, 555, 115, 467, 750, 456, 879, 130, 31, 295]]

元記事を表示

Djangoでデータベースを正規化する方法

Djangoを使っているエンジニアの方、
趣味で使っている方、
始めたばかりの皆さんこんにちは!

私はDjangoを使って開発するのが好きな22歳のkazukiniiyamaと言います。

今日は、
DjangoでDB設計するときに、
正規化とは何ぞやとなる人が一定数いると思います。

そんな方たちの力に少しでもなれたらと思って調べた情報をまとめてます。

もし間違いや指摘、修正の必要がありそうな場合はどんどん言ってください!

ただただ感想を言ってくれるのもうれしいですので、コメント待っています。

### DBの正規化とは

DBの正規化とは、
データの重複を避けるために、
データベースを構造化するプロセスのことを指します。
### 正規化の簡単なステップ

**第1正規形 (1NF)**:

各列が一意の値を持つようにデータテーブルを構造化します。

Djangoにおいてそれは、

**各モデルフィールドを一意に設定する**ことです

**第2正規形 (2NF)**:

すべての非キー列が主キーに完全に依存するようにします。
Djangoにおいてそれは、

**ForeignK

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その14 名前空間とスコープの仕組み

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/95282cb1532602799052

# 実装の進捗状況と前回までのおさらい

## 〇×ゲームの仕様と進捗状況

1. `正方形で区切られた 3 x 3 の 2 次元のゲーム盤上でゲームを行う`
2. `ゲーム開始時には、ゲーム盤の全てのマスは空になっている`
3. `2 人のプレイヤーが遊ぶゲームであり、一人は 〇 を、もう一人は × のマークを受け持つ`
4. __2 人のプレイヤーは、交互に空いている好きなマスに自分のマークを 1 つ置く__
5. 先手は 〇 のプレイヤーである
6. プレイヤーがマークを置いた結果、縦、横、斜めのいずれかの一直線の 3 マスに同じマークが並んだ場合、そのマークのプレイヤーの勝利とし、ゲームが終了する
7. すべてのマスが埋まった時にゲームの決着がついていない場合は引き分けとする

仕様の進捗状況は、以下のように表記します。

* 実装が完了した部分

元記事を表示

【AzureML プロンプトフロー】Q&A with Your Own Data Using Faiss Index

# はじめに
今回はAzureMLのプロンプトフローを試してみます。
サンプルフローはいくつかありますが、その中でも「Q&A with Your Own Data Using Faiss Index」を使います。

# QnA with Your Own Data Using Faiss Index
このプロンプトフローでは、GPT3.5を使用したQ&Aを利用できます。ユーザーの質問からドキュメントに沿った回答ができます。

まず、プロンプトフローを「作成」して、「QnA with Your Own Data Using Faiss Index」を選択して始めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976188/8d98aaa9-6d5e-c292-11ec-b8e4c4d0516f.png)

## Azure OpenAIの接続
はじめにプロンプトフローではLLM接続が必要となってくるため、すでにデプロイしたAzure OpenAIのモデルに接続します。

「接続」

元記事を表示

フリーランスで年収1000万超えたい人におすすめ案件サイト

# はじめに
みなさん、こんにちは。高校生エンジニアの[@Raio](https://twitter.com/Raio14f)です?

平日は公立高校に通いながら、放課後や休日はSkyGrid株式会社のエンジニアとして働いています??‍?

今回の記事では、
**フリーランスエンジニア必見!年収100万超えたい人におすすめ案件サイト**
をご紹介します!

– フリーランスエンジニアやってるけど、年収が上がらない
– 今よりも収入を増やしたい
– 年収1000万円超えたい

こんな方に、おすすめの記事となっております!
ご興味ある方は、是非最後までご覧ください?

# エミリーエンジニアとは?

**[「エミリーエンジニア」](https://px.a8.net/svt/ejp?a8mat=3THFQV+6NXPKI+5AWI+5YRHE)とは、フリーランスエンジニアを専門としたエージェントサービスです。**

大手企業や上流工程の案件など幅広くの案件を取り扱っており、一人一人のスキルに合わせた案件を紹介してくれます。さらに、エージェントが面接対策や今後のキャリアプランの相談など、サポ

元記事を表示

ChatGPTと会話しながらWEB上でCSVファイルをインポートできるように実装してみたのでメモメモ

どうもこんにちは。

Pythonチャレンジ第3弾です。

第1弾、第2弾を見ていない方はこちらからご覧ください。

https://qiita.com/PDC-Kurashinak/private/355fcd920aa6803e59f3

https://qiita.com/PDC-Kurashinak/private/41297d8bff6c938dd80e

今回は、WEB上からCSVファイルをインポートして、そのデータをWEB上に可視化するシステムを作ります。

# 実装方法

## 1. Flaskの拡張機能をインストール

ファイルのアップロードを簡単に扱うために、`Flask-WTF`という機能を使用します。
`requirements.txt`に以下を追加します。

“`makefile
Flask-WTF==0.15.1
“`

## 2. ファイルアップロードフォームの作成

`app.py`に以下のコードを追加します。

“`python
from flask_wtf import FlaskForm
from wtforms import FileFie

元記事を表示

PythonによるWord文書の編集制限の設定と削除

Word文書の編集制限は、文書のセキュリティ機能であり、あなたが制限する文書を編集することができます。 編集制限を設定することで、文書へのアクセスを制御し、権限のある担当者だけが変更を加えられるようにしたり、権限のある担当者がどのセクションでどのような変更を加えられるかを制限したりすることができます。 この制御により、不必要な変更や悪用の可能性を防ぎ、文書の改ざんや破損のリスクを減らすことができるため、共同編集や情報収集などが容易になります。 この記事では、Pythonを使って**Word文書の編集制限を設定**したり、**編集制限を解除**したりする方法について説明します。

– **[パスワードによるWord文書全体の編集制限の設定](#パスワードによるword文書全体の編集制限の設定)**
– **[Word文書に編集制限を設定する際の制限解除領域の追加](#word文書に編集制限を設定する際の制限解除領域の追加)**
– **[Word文書の編集制限の解除](#word文書の編集制限の解除)**

Spire.Doc for Pythonライブラリは、[公式ウェブサイト](ht

元記事を表示

サーバーサイドのデザインパターン[Observer Patternの章]

# Observerパターンとは
1. 定義
Observerパターンは、オブジェクト間に一対多の依存関係を定義し、あるオブジェクトの状態が変更されると、そのオブジェクトに依存する全てのオブジェクトにその内容が通知される、というデザインパターンです。これにより、変更を監視するオブジェクト群が、変更された内容を知り、適切に反応できるのです。

2. 主要なコンポーネント
Subject(被験体):
状態が変更されるとObserverに通知するオブジェクトです。
Observer(観察者):
Subjectの状態の変化を監視し、状態が変化した際に通知を受け取るオブジェクトです。
3. 実装例
3.1 Pythonでの実装
Pythonを利用して、具体的なObserverパターンの実装を示します。以下のコードは、Subjectクラスとその具体クラスConcreteSubject、そしてObserverインターフェース及びその具体クラスConcreteObserverを定義しています。

“`python
class Subject:
def __init__(self):

元記事を表示

PythonでExcelのデータを読み込む方法

Excelはデータを保存し管理するための最適なドキュメント形式です。Excelドキュメントからデータを素早く読み取りたい場合は、適切なライブラリを使用してExcelファイルを開き、セルの範囲を取得することができます。その範囲は、ワークシート全体、特定の行または列、またはカスタムの範囲にすることができます。以下に、詳細な手順を示します。

## ツール
* Visual Studio Code
* [Spire.XLS for Python](https://www.e-iceblue.com/Introduce/xls-for-python.html)
このライブラリは、[Excel の作成](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Document-Operation/Python-Create-Read-or-Update-Excel-Documents.html)、[Excel から PDF への変換](https://www.e-iceblue.com/Tutor

元記事を表示

Recruiting Opsをやっていく 2

# はじめに
前回の「Recruiting Opsをやっていく(無印)」は[こちら](https://qiita.com/Changkengo/items/4b35e0526c01f9c7a785)です

## 自己紹介
– 株式会社エクサウィザーズで採用部を担当しています
– マーケティング/PRがバックグラウンドで、現在は採用人事をメインにしています
– 技術者だったことはありません (予防線)

# 課題(再掲)
前述の記事を見て頂いていたら読み飛ばしても大丈夫です。
また、後述の内容は↑の記事を見ていなくてもわかるように書いています。

##### 1.採用は自動化されていないオペレーションだらけ
オペレーションの重要性が高い一方で、よりよい活動のためには個別化(パーソナライズ)が必須という状況。モチベーションとしては適切なオペレーションの自動化を通して、個別化を限界までしたいわけです。

##### 2.エクサウィザーズは採用目標人数に対して採用チームが小さく、効率化 or Die
※数字の更新がめんどくさかったので前回記事の内容をそのまま引用してますが、今も大体同じ感じです

元記事を表示

DRFマスタリー:Django Rest FrameworkでAPIを効率的に構築する方法

API開発が急速に進化し、その中心には効率とパフォーマンスが求められます。Django Rest Framework(DRF)は、PythonとDjangoのエコシステム内で、これらの要求に応えるための優れたツールです。しかし、そのポテンシャルを最大限に引き出すには、DRFの各コンポーネントとその働きを理解することが不可欠です。

このガイドでは、DRFの主要なコンポーネントであるシリアライザ、ビューセット、ルーティング、認証と権限、ページネーション、そしてカスタムバリデーションに焦点を当て、それぞれの役割と効果的な使用方法を解説します。これらの知識を武器に、あなたも効率的でパワフルなAPIを構築するマスターになりましょう!

## シリアライザ

モデルをJSONに形式に変えるのが**シリアライザ**です。APIをよく使う人にとっては、この説明だけでシリアライザの役割が伝わるでしょう。APIになじみのない人は、「APIというものはJSONという形式で、データの送受信を行っていることが多い」と理解できれば、シリアライズはその第一歩としての役割を持っていることがわかるでしょう。

##

元記事を表示

【Python】Windows IISサーバーのFastAPIの立て方

## 導入手順

### IIS(Internet Information Services)を有効化する
1. コントロールパネル -> プログラム -> プログラムと機能 -> Windows の機能の有効化または無効化から以下を有効化する。
– Windowsプロセスアクティブ化サービス
– インターネットインフォメーションサービス
– CGI
1. インターネットインフォメーションサービス(IIS)マネージャーを開く
1. Default Web Siteを右クリックして、アプリケーションの追加を押す
Webアプリケーションのエイリアス(ドメイン以下のURL) = /WebApp
物理パス = C:\inetpub\wwwroot\webapp
1. [オプション] ファイアーウォールの設定からポートを開く
設定 -> ネットワークとインターネット -> Windows ファイアウォール -> 詳細設定から

:::note warn
IISを有効化するだけで、ポート80が解放される場合もあります。

元記事を表示

Pythonでリスト・辞書の操作を行ってみた!

pythonに関して様々投稿してきたわけですが、今回はリスト・辞書の操作に関しての投稿です。では早速投稿していきます。

“`py
l1 = [1, 2, 3]
l2 = l1 * 3
print(l2)
“`

実行結果
[1, 2, 3, 1, 2, 3, 1, 2, 3]

これを利用すると、N個と同じ要素からなるリストを生成することが可能になります。

リストの結合
“`py
l1 = [“りんご”, “みかん”, “バナナ”]
l2 = [“いちご”, “オレンジ”, “パイナップル”]
l3 = l1 + l2
print(l1)
print(l2)
print(l3)
“`

実行結果
[‘りんご’, ‘みかん’, ‘バナナ’]
[‘いちご’, ‘オレンジ’, ‘パイナップル’]
[‘りんご’, ‘みかん’, ‘バナナ’, ‘いちご’, ‘オレンジ’, ‘パイナップル’]

extendメソッドを使用すると、リストの対して別のリストを結合することができます。次のコードでは、リストl1にl2を結合しています。

“`py
l1 = [“りんご”, “みかん”,

元記事を表示

伝説のポケモンかどうかの判断モデル爆速で作るぜ(PyCaret, fasteda)

# はじめに
前の記事からはや3ヶ月、試用期間も終わり本採用を果たした筆者はAIの普及に全力を注いでいます。~~本採用されたからそんな簡単に解雇されないしめちゃくちゃやってやろ~~

↓前記事

https://qiita.com/MAsa_min/items/d6cd3d6248d4b17b4cb7

# ポケモンのデータ
みなさんご存知のKaggleでポケモンのデータを見つけたので遊んでみようと思います。見つけた時は何に使うデータなんだと思いましたし、今もよくわかっていません。遊びたい方は以下からどうぞ!

https://www.kaggle.com/datasets/rounakbanik/pokemon

主成分分析されている方もいらっしゃるので、こちらも興味深いです。

https://qiita.com/tomoxxx/items/5c4a758c194a1362fa38

# データ解析
さて、まずはデータを読み込んで俯瞰してみます。でもあれこれコードを書くのは面倒くさいですよね?そんな時はコレ。てれれれってれ~(某猫型ロボットを思い浮かべながら読んでください)、fas

元記事を表示

OTHERカテゴリの最新記事