>백엔드 개발 >파이썬 튜토리얼 >Python에서 스트라이프 테스트 데이터 생성

Python에서 스트라이프 테스트 데이터 생성

Patricia Arquette
Patricia Arquette원래의
2024-12-28 10:37:10712검색

우리는 OpenAI 클라이언트 라이브러리를 사용하여 Airbyte PGVector 커넥터를 통해 OpenAI 임베딩을 생성하고 Stripe의 전자상거래 데이터를 Supabase에서 실행되는 PGVector로 이동하여 AI 챗봇을 구축할 수 있는 방법을 보여주기 위해 새로운 AI 데이터 과정을 진행해 왔습니다. 앱에 자연어 지원을 추가합니다. 이는 많은 고객이 구현하고 있는 매우 일반적인 "지능형 데이터 스택" 앱 패턴입니다. 소스와 대상은 변경될 수 있지만 패턴(데이터 소스 > 데이터 이동 및 임베딩 생성 > 벡터 지원 데이터 저장소 > OpenAI를 사용한 웹 앱)은 동일하게 유지됩니다.

Creating Stripe Test Data in Python

사람들이 직접 체험할 수 있는 과정을 진행 중이기 때문에 설정을 최대한 쉽게 만들고 싶었습니다. 이것의 가장 큰 부분은 Stripe에서 충분한 테스트 데이터를 생성하여 챗봇이 상호 작용할 수 있는 합리적인 데이터 세트가 있다는 것이었습니다. 이전에 Stripe을 사용해 본 적이 있다면 실험할 수 있는 훌륭한 Sandbox가 있다는 것을 알고 계실 것입니다. 유일한 문제는 샘플 데이터가 미리 로드되어 있지 않다는 것입니다.

CLI Fixtures 명령을 통해 로드할 수 있는 몇 가지 샘플 데이터 세트가 있습니다. 그러나 우리가 사용하기에는 이러한 것들이 필요에 맞지 않았습니다. 우리는 더 큰 데이터 세트를 원했고 이 자료는 온라인과 워크샵에서 사용될 것이기 때문에 학습자에게 로컬 컴퓨터에 CLI와 같은 것을 설치하도록 요청하면 많은 복잡성을 처리하게 됩니다. 사용자가 실행 중인 OS 버전, 설치에 대한 올바른 권한이 있는지 등을 알 수 없습니다. 나는 그 길로 가기에는 너무 여러 번 화상을 입었습니다.

다행히 Stripe에는 환상적인 API와 훌륭한 Python 클라이언트도 있어서 학습자가 원하는 데이터를 실행하고 삽입할 수 있는 공동작업 노트북을 빠르게 만들 수 있었습니다.

!pip install 스트라이프를 통해 스트라이프 라이브러리를 설치하고 Google Collab 비밀을 사용하여 테스트 키를 전달한 후 고객 및 제품에 대해 임의의 이름을 설정해야 했습니다. 무작위로 수집한 고객, 가격이 다른 제품, 구매 항목을 삽입하는 것이 목표였습니다. 이렇게 하면 우리가 챗봇에게 "누가 가장 저렴하게 구매했는지, 얼마를 지불했고, 무엇을 구매했는지"와 같은 질문을 할 때 데이터가 충분했습니다.

import stripe
import random
from google.colab import userdata


stripe.api_key = userdata.get('STRIPE_TEST_KEY')


# Sample data for generating random names
first_names = ["Alice", "Bob", "Charlie", "Diana", "Eve", "Frank", "Grace", "Hank", "Ivy", "Jack", "Quinton", "Akriti", "Justin", "Marcos"]
last_names = ["Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Wall", "Chau", "Keswani", "Marx"]
# Sample clothing product names
clothing_names = [
    "T-Shirt", "Jeans", "Jacket", "Sweater", "Hoodie",
    "Shorts", "Dress", "Blouse", "Skirt", "Pants",
    "Shoes", "Sandals", "Sneakers", "Socks", "Hat",
    "Scarf", "Gloves", "Coat", "Belt", "Tie",
    "Tank Top", "Cardigan", "Overalls", "Tracksuit", "Polo Shirt",
    "Cargo Pants", "Capris", "Dungarees", "Boots", "Cufflinks",
    "Raincoat", "Peacoat", "Blazer", "Slippers", "Underwear",
    "Leggings", "Windbreaker", "Tracksuit Bottoms", "Beanie", "Bikini"
]
# List of random colors
colors = [
    "Red", "Blue", "Green", "Yellow", "Black", "White", "Gray",
    "Pink", "Purple", "Orange", "Brown", "Teal", "Navy", "Maroon",
    "Gold", "Silver", "Beige", "Lavender", "Turquoise", "Coral"
]

다음으로 Stripe에 필요한 각 데이터 유형에 대한 기능을 추가할 차례였습니다.

# Function to create sample customers with random names
def create_customers(count=5):
    customers = []
    for _ in range(count):
        first_name = random.choice(first_names)
        last_name = random.choice(last_names)
        name = f"{first_name} {last_name}"
        email = f"{first_name.lower()}.{last_name.lower()}@example.com"

        customer = stripe.Customer.create(
            name=name,
            email=email,
            description="Sample customer for testing"
        )
        customers.append(customer)
        print(f"Created Customer: {customer['name']} (ID: {customer['id']})")
    return customers

# Function to create sample products with random clothing names and colors
def create_products(count=3):
    products = []
    for _ in range(count):
        color = random.choice(colors)
        product_name = random.choice(clothing_names)
        full_name = f"{color} {product_name}"
        product = stripe.Product.create(
            name=full_name,
            description=f"This is a {color.lower()} {product_name.lower()}"
        )
        products.append(product)
        print(f"Created Product: {product['name']} (ID: {product['id']})")
    return products

# Function to create prices for the products with random unit_amount
def create_prices(products, min_price=500, max_price=5000):
    prices = []
    for product in products:
        unit_amount = random.randint(min_price, max_price)  # Random amount in cents
        price = stripe.Price.create(
            unit_amount=unit_amount,
            currency="usd",
            product=product['id']
        )
        prices.append(price)
        print(f"Created Price: ${unit_amount / 100:.2f} for Product {product['name']} (ID: {price['id']})")
    return prices

# Function to create random purchases for each customer
def create_purchases(customers, prices, max_purchases_per_customer=5):
    purchases = []
    for customer in customers:
        num_purchases = random.randint(1, max_purchases_per_customer)  # Random number of purchases per customer
        for _ in range(num_purchases):
            price = random.choice(prices)  # Randomly select a product's price
            purchase = stripe.PaymentIntent.create(
                amount=price['unit_amount'],  # Amount in cents
                currency=price['currency'],
                customer=customer['id'],
                payment_method_types=["card"],  # Simulate card payment
                description=f"Purchase of {price['product']} by {customer['name']}"
            )
            purchases.append(purchase)
            print(f"Created Purchase for Customer {customer['name']} (Amount: ${price['unit_amount'] / 100:.2f})")
    return purchases

남은 것은 스크립트를 실행하고 필요한 데이터의 양을 지정하는 것뿐입니다.

# Main function to create sample data
def main():
    print("Creating sample customers with random names...")
    customers = create_customers(count=20)

    print("\nCreating sample products with random clothing names and colors...")
    products = create_products(count=30)

    print("\nCreating prices for products with random amounts...")
    prices = create_prices(products, min_price=500, max_price=5000)

    print("\nCreating random purchases for each customer...")
    purchases = create_purchases(customers, prices, max_purchases_per_customer=10)

    print("\nSample data creation complete!")
    print(f"Created {len(customers)} customers, {len(products)} products, and {len(purchases)} purchases.")

if __name__ == "__main__":
    main()

Stripe Sandbox에 데이터를 로드한 후 Connector Builder를 사용하여 API 엔드포인트를 각 데이터 유형의 스트림에 매핑하고 동기화 작업을 설정함으로써 이를 Airbyte에 연결하는 데 몇 분 밖에 걸리지 않았습니다.

Creating Stripe Test Data in Python

문제가 해결되었습니다! Collab Python 스크립트는 학습자가 테스트 데이터를 Stripe에 삽입하는 것이 매우 쉽습니다. 유사한 테스트를 수행하는 다른 사람에게 도움이 되기를 바랍니다.

위 내용은 Python에서 스트라이프 테스트 데이터 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.