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 中間件

## 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 連接到 Stripe

按照 Moesif Docs 上的詳細說明將Moesif 連接到您的 Stripe 帳戶。

為了演示的目的,在配置 id 映射時,將 Moesif 字段映射company_id到 Stripe 字段customer.company_id

此映射可幫助 Moesif 識別與 API 事件關聯的 company_id 的 Stripe 客戶。

使用 Moesif 的產品目錄創建計劃/價格

對于基于使用量的計費,您需要一個包含一個或多個價格的計劃。每個價格代表您要對其收取使用費的一項資源。

盡管您可以直接在 Stripe 中創建計劃和價格,但 Moesif 的產品目錄功能可以簡化這一過程,并在 Stripe 中為您創建同步計劃。

繼續創建測試計劃和每單位代幣的價格,參見下面的圖片示例。

創建價格

創建計費表

計費計量器將指標與計劃/價格綁定,然后將該指標值報告給 Stripe 或其他計費提供商。在這里,我們將為我們之前設置的 response.Headers.X-Token-Used 標頭的 SUM 創建計費計量器。

在 Moesif 中,點擊 Billing Meter,然后點擊 Create new,在 Billing Meter 表單中:

驗證

以上基本上就是您需要的所有設置。讓我們測試并驗證一下。

在 Stripe 中創建客戶并訂閱

通常,客戶和訂閱會在 Stripe 的結帳流程中自動創建。但為了實現此目的,請在Stripe 的儀表板中手動創建這兩個對象。

再次發送更多 API 請求。

現在,發送到您的測試服務器的 API 調用應該被計量并報告給 Stripe 以收取付款。

接下來該怎么做:

Gen-AI 產品價格昂貴,因此計量各種資源的使用情況非常重要。以上示例展示了如何快速設置使用計費并將成本與您為客戶創造的價值掛鉤。

本示例中的代碼在Github上。

下一步,請探索 Moesif 文檔,了解計費計量解決方案的靈活性和強大性。

原文鏈接:https://www.moesif.com/blog/technical/gen-ai/ChatBot-API-OpenAI-Token-Usaged-Based-Monetization/

上一篇:

API 貨幣化指南:如何選擇合適的工具和平臺

下一篇:

AI API 貨幣化的挑戰
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費