
2024年在線市場平臺的11大最佳支付解決方案
openai==0.27.0
python-dotenv==1.0.1
moesifwsgi
然后安裝依賴項。
pip install -r requirements.txt
創建一個名為 的文件.env
,我們將在其中放置您的 API 密鑰。您可以使用 OpenAI 創建一個帳戶,并且您可能需要在您的 OpenAI 帳戶中存入至少 1 美元。對于 Moesif 應用程序 ID,您可以從免費帳戶中獲取它。
OPENAI_API_KEY="Obtain from your Open AI Account"
MOESIF_APPLICATION_ID="Obtain from your Moesif Account"
創建一個名為 的新文件app.py
,聊天 API 的代碼非常簡單:
from flask import Flask, request, jsonify
import openai
from dotenv import load_dotenv
import os
from moesifwsgi import MoesifMiddleware
# Load environment variables from .env file
load_dotenv()
# Set your OpenAI API key here
openai.api_key = os.getenv('OPENAI_API_KEY')
app = Flask(__name__)
@app.route('/chat', methods=['POST'])
def chat():
user_input = request.json.get('message')
# Define the onboarding conversation
conversation = [
{"role": "system", "content": "You are a customer onboarding agent."},
{"role": "user", "content": user_input}
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=conversation,
max_tokens=150
)
# Extract the response text and token usage
response_text = response.choices[0].message['content'].strip()
tokens_used = response.usage.total_tokens
response_obj = jsonify({
'response': response_text,
})
# Add the token usage to the response headers
response_obj.headers['X-Tokens-Used'] = tokens_used
# Adding the value to header is just one of many approaches.
# Since Moesif can do metering on almost any field, you can add the
# value to Header, Body, or even Metadata.
return response_obj
該 API 是 ChatGPT 的一個簡單外觀,但我們添加了一個響應標頭X-Tokens-Used
。還有其他方法可以捕獲這些數據,上一節將簡要討論這些方法。
## Moesif Middleware Setup:
def identify_user(app, environ, response_headers=dict()):
# Your custom code that returns a user id string
user_id = "my-chat-user"
return user_id
def identify_company(app, environ, response_headers=dict()):
# Your custom code that returns a company id string
# hardcoded to this value for now.
company_id = "my-chat-company"
return company_id
moesif_settings = {
'APPLICATION_ID': os.getenv('MOESIF_APPLICATION_ID'),
'DEBUG': False,
'LOG_BODY': True,
'IDENTIFY_USER': identify_user,
'IDENTIFY_COMPANY': identify_company,
'CAPTURE_OUTGOING_REQUESTS': False
}
# flask
app.wsgi_app = MoesifMiddleware(app.wsgi_app, moesif_settings)
if __name__ == "__main__":
app.run(debug=True)
在這個例子中,我們沒有實現身份驗證,但是當您實現身份驗證時,您可以輕松地用實際 ID 替換占位符 user_id 和/或 company_id。(順便說一句,請參閱Moesif 實體圖以查看用戶、公司和訂閱的關系模型。
這基本上就是您需要的所有代碼。讓我們運行它。
python app.py
請使用下面的 curl 命令發送一些 API 請求。
curl --request POST \
--url http://localhost:5000/chat \
--header 'Content-Type: application/json' \
--data '{
"message": "How are you? What do you do?"
}'
您應該能夠看到在Moesif 事件流中捕獲的 API 調用。
現在,我們只需要配置您的 Moesif 和 Stripe 帳戶。
按照 Moesif Docs 上的詳細說明將Moesif 連接到您的 Stripe 帳戶。
為了演示的目的,在配置 id 映射時,將 Moesif 字段映射company_id
到 Stripe 字段customer.company_id
此映射可幫助 Moesif 識別與 API 事件關聯的 company_id 的 Stripe 客戶。
對于基于使用量的計費,您需要一個包含一個或多個價格的計劃。每個價格代表您要對其收取使用費的一項資源。
盡管您可以直接在 Stripe 中創建計劃和價格,但 Moesif 的產品目錄功能可以簡化這一過程,并在 Stripe 中為您創建同步計劃。
繼續創建測試計劃和每單位代幣的價格,參見下面的圖片示例。
計費計量器將指標與計劃/價格綁定,然后將該指標值報告給 Stripe 或其他計費提供商。在這里,我們將為我們之前設置的 response.Headers.X-Token-Used 標頭的 SUM 創建計費計量器。
在 Moesif 中,點擊 Billing Meter,然后點擊 Create new,在 Billing Meter 表單中:
request.URI Route
。/chat
(您可以添加其他條件,例如狀態為 200。)response.headers.X-Tokens-Used
,并使用sum
作為函數將它們相加。以上基本上就是您需要的所有設置。讓我們測試并驗證一下。
通常,客戶和訂閱會在 Stripe 的結帳流程中自動創建。但為了實現此目的,請在Stripe 的儀表板中手動創建這兩個對象。
company_id
為值my-chat-company
,即上面 MoesifMiddleware 示例中當前硬編碼的“identify_company”鉤子。這就是條紋的客戶 ID 與 company_id 綁定的方式。現在,發送到您的測試服務器的 API 調用應該被計量并報告給 Stripe 以收取付款。
Gen-AI 產品價格昂貴,因此計量各種資源的使用情況非常重要。以上示例展示了如何快速設置使用計費并將成本與您為客戶創造的價值掛鉤。
本示例中的代碼在Github上。
下一步,請探索 Moesif 文檔,了解計費計量解決方案的靈活性和強大性。
GET_METADATA
鉤子來預先計算任何值并添加到事件中。原文鏈接:https://www.moesif.com/blog/technical/gen-ai/ChatBot-API-OpenAI-Token-Usaged-Based-Monetization/