openai==0.27.0
python-dotenv==1.0.1
moesifwsgi

然后安裝依賴項(xiàng)。

pip install -r requirements.txt

創(chuàng)建一個(gè)名為 的文件.env,我們將在其中放置您的 API 密鑰。您可以使用 OpenAI 創(chuàng)建一個(gè)帳戶,并且您可能需要在您的 OpenAI 帳戶中存入至少 1 美元。對(duì)于 Moesif 應(yīng)用程序 ID,您可以從免費(fèi)帳戶中獲取它。

OPENAI_API_KEY="Obtain from your Open AI Account"
MOESIF_APPLICATION_ID="Obtain from your Moesif Account"

創(chuàng)建一個(gè)名為 的新文件app.py,聊天 API 的代碼非常簡(jiǎn)單:

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 的一個(gè)簡(jiǎn)單外觀,但我們添加了一個(gè)響應(yīng)標(biāo)頭X-Tokens-Used。還有其他方法可以捕獲這些數(shù)據(jù),上一節(jié)將簡(jiǎn)要討論這些方法。

添加 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)

在這個(gè)例子中,我們沒有實(shí)現(xiàn)身份驗(yàn)證,但是當(dāng)您實(shí)現(xiàn)身份驗(yàn)證時(shí),您可以輕松地用實(shí)際 ID 替換占位符 user_id 和/或 company_id。(順便說一句,請(qǐng)參閱Moesif 實(shí)體圖以查看用戶、公司和訂閱的關(guān)系模型。

這基本上就是您需要的所有代碼。讓我們運(yùn)行它。

python app.py

請(qǐng)使用下面的 curl 命令發(fā)送一些 API 請(qǐng)求。

curl --request POST \
--url http://localhost:5000/chat \
--header 'Content-Type: application/json' \
--data '{
"message": "How are you? What do you do?"
}'

您應(yīng)該能夠看到在Moesif 事件流中捕獲的 API 調(diào)用。

現(xiàn)在,我們只需要配置您的 Moesif 和 Stripe 帳戶。

將 Moesif 連接到 Stripe

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

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

此映射可幫助 Moesif 識(shí)別與 API 事件關(guān)聯(lián)的 company_id 的 Stripe 客戶。

使用 Moesif 的產(chǎn)品目錄創(chuàng)建計(jì)劃/價(jià)格

對(duì)于基于使用量的計(jì)費(fèi),您需要一個(gè)包含一個(gè)或多個(gè)價(jià)格的計(jì)劃。每個(gè)價(jià)格代表您要對(duì)其收取使用費(fèi)的一項(xiàng)資源。

盡管您可以直接在 Stripe 中創(chuàng)建計(jì)劃和價(jià)格,但 Moesif 的產(chǎn)品目錄功能可以簡(jiǎn)化這一過程,并在 Stripe 中為您創(chuàng)建同步計(jì)劃。

繼續(xù)創(chuàng)建測(cè)試計(jì)劃和每單位代幣的價(jià)格,參見下面的圖片示例。

創(chuàng)建價(jià)格

創(chuàng)建計(jì)費(fèi)表

計(jì)費(fèi)計(jì)量器將指標(biāo)與計(jì)劃/價(jià)格綁定,然后將該指標(biāo)值報(bào)告給 Stripe 或其他計(jì)費(fèi)提供商。在這里,我們將為我們之前設(shè)置的 response.Headers.X-Token-Used 標(biāo)頭的 SUM 創(chuàng)建計(jì)費(fèi)計(jì)量器。

在 Moesif 中,點(diǎn)擊 Billing Meter,然后點(diǎn)擊 Create new,在 Billing Meter 表單中:

驗(yàn)證

以上基本上就是您需要的所有設(shè)置。讓我們測(cè)試并驗(yàn)證一下。

在 Stripe 中創(chuàng)建客戶并訂閱

通常,客戶和訂閱會(huì)在 Stripe 的結(jié)帳流程中自動(dòng)創(chuàng)建。但為了實(shí)現(xiàn)此目的,請(qǐng)?jiān)赟tripe 的儀表板中手動(dòng)創(chuàng)建這兩個(gè)對(duì)象。

再次發(fā)送更多 API 請(qǐng)求。

現(xiàn)在,發(fā)送到您的測(cè)試服務(wù)器的 API 調(diào)用應(yīng)該被計(jì)量并報(bào)告給 Stripe 以收取付款。

接下來該怎么做:

Gen-AI 產(chǎn)品價(jià)格昂貴,因此計(jì)量各種資源的使用情況非常重要。以上示例展示了如何快速設(shè)置使用計(jì)費(fèi)并將成本與您為客戶創(chuàng)造的價(jià)值掛鉤。

本示例中的代碼在Github上。

下一步,請(qǐng)?zhí)剿?Moesif 文檔,了解計(jì)費(fèi)計(jì)量解決方案的靈活性和強(qiáng)大性。

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

上一篇:

API 貨幣化指南:如何選擇合適的工具和平臺(tái)

下一篇:

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

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)