1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPT 私の使い方Advent Calendar 2024

Day 1

ChatGPTをさっと使って部分的に生産性を向上させる

Posted at

前提

本稿では生成AIのサービスはChatGPTを使うことのみ想定。GitHubCopilotなど他のサービスでは普通に使える機能も混ざっている可能性がある。
本稿では「さっと使って部分的に」がテーマである。要件確定~設計~開発まで生成AIドリブンで限りなく自動化して、という大層なことには触れない。

使い道

データ変換系

json⇔csv切り替え

以下のjson配列を、「キー1」「キー2」「キー3」が列名であるcsvに変換してください。
{json配列}

jsonデータからjsonスキーマ作成

以下のjson配列について考えます{json配列}
これを以下のjsonスキーマのような形にしてください。
{jsonスキーマ}

ここでいうjsonスキーマは以下のようなfunction callingのスキーマを想定しています。

"parameters": {
    "type": "object",
    "properties": {
        "list":{
        "type" "array",
        "items": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "日本の都市名を表す文字列です。",
            },
            "unit": {
              "type": "string",
              "description": "気温を取得する場合の単位です。摂氏と華氏のいずれかです。",
              "enum": ["celsius", "fahrenheit"],
              "default": "celsius",
            },
            "required": ["location", "unit"],
          }
        }
        }
    },
    "required": ["list"],
},

json⇔pydanticモデル

以下のjson配列をpydanticモデルに変換してください。{json配列}

入力

{
  "function_call": {
    "function_name": "get_weather_forecast",
    "parameters": {
      "location": {
        "city": "Tokyo",
        "country": "Japan"
      },
      "date": "2024-12-03",
      "units": "metric"
    }
  },
  "response": {
    "status": "success",
    "data": {
      "location": {
        "city": "Tokyo",
        "country": "Japan"
      },
      "forecast": [
        {
          "date": "2024-12-03",
          "temperature": {
            "min": 8,
            "max": 15
          },
          "condition": "Cloudy"
        },
        {
          "date": "2024-12-04",
          "temperature": {
            "min": 9,
            "max": 16
          },
          "condition": "Sunny"
        }
      ]
    }
  },
  "error": null
}

出力

from typing import List, Optional
from pydantic import BaseModel


class Location(BaseModel):
    city: str
    country: str


class Temperature(BaseModel):
    min: int
    max: int


class Forecast(BaseModel):
    date: str
    temperature: Temperature
    condition: str


class ResponseData(BaseModel):
    location: Location
    forecast: List[Forecast]


class FunctionCallParameters(BaseModel):
    location: Location
    date: str
    units: str


class FunctionCall(BaseModel):
    function_name: str
    parameters: FunctionCallParameters


class Response(BaseModel):
    status: str
    data: Optional[ResponseData]


class Error(BaseModel):
    code: Optional[str]
    message: Optional[str]


class RootModel(BaseModel):
    function_call: FunctionCall
    response: Optional[Response]
    error: Optional[Error]


# JSONデータをPythonオブジェクトに変換する例
json_data = {
    "function_call": {
        "function_name": "get_weather_forecast",
        "parameters": {
            "location": {
                "city": "Tokyo",
                "country": "Japan"
            },
            "date": "2024-12-03",
            "units": "metric"
        }
    },
    "response": {
        "status": "success",
        "data": {
            "location": {
                "city": "Tokyo",
                "country": "Japan"
            },
            "forecast": [
                {
                    "date": "2024-12-03",
                    "temperature": {
                        "min": 8,
                        "max": 15
                    },
                    "condition": "Cloudy"
                },
                {
                    "date": "2024-12-04",
                    "temperature": {
                        "min": 9,
                        "max": 16
                    },
                    "condition": "Sunny"
                }
            ]
        }
    },
    "error": None
}

# Pydanticモデルのインスタンスを作成
model_instance = RootModel(**json_data)
print(model_instance)

unicode文字を変換

ログで日本語がunicode文字で出てきてしまったときによく使う

{対象のunicode文字}を日本語に変換してください

その他

テストデータ準備

以下の関数のテストデータを作成してください。
ただし、境界値やカバレッジなどについても考慮して複数セット用意してください。
{関数}

cURL⇔wget⇔pythonのrequestsモジュールでの記法変換

(省略)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?