
2024年在線市場(chǎng)平臺(tái)的11大最佳支付解決方案
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 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 Docs 上的詳細(xì)說明將Moesif 連接到您的 Stripe 帳戶。
為了演示的目的,在配置 id 映射時(shí),將 Moesif 字段映射company_id
到 Stripe 字段customer.company_id
此映射可幫助 Moesif 識(shí)別與 API 事件關(guān)聯(lián)的 company_id 的 Stripe 客戶。
對(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à)格,參見下面的圖片示例。
計(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 表單中:
request.URI Route
。/chat
(您可以添加其他條件,例如狀態(tài)為 200。)response.headers.X-Tokens-Used
,并使用sum
作為函數(shù)將它們相加。以上基本上就是您需要的所有設(shè)置。讓我們測(cè)試并驗(yàn)證一下。
通常,客戶和訂閱會(huì)在 Stripe 的結(jié)帳流程中自動(dòng)創(chuàng)建。但為了實(shí)現(xiàn)此目的,請(qǐng)?jiān)赟tripe 的儀表板中手動(dòng)創(chuàng)建這兩個(gè)對(duì)象。
company_id
為值my-chat-company
,即上面 MoesifMiddleware 示例中當(dāng)前硬編碼的“identify_company”鉤子。這就是條紋的客戶 ID 與 company_id 綁定的方式。現(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)大性。
GET_METADATA
鉤子來預(yù)先計(jì)算任何值并添加到事件中。原文鏈接:https://www.moesif.com/blog/technical/gen-ai/ChatBot-API-OpenAI-Token-Usaged-Based-Monetization/
2024年在線市場(chǎng)平臺(tái)的11大最佳支付解決方案
完整指南:如何在應(yīng)用程序中集成和使用ChatGPT API
選擇AI API的指南:ChatGPT、Gemini或Claude,哪一個(gè)最適合你?
用ASP.NET Core 2.1 建立規(guī)范的 REST API — 緩存和并發(fā)
企業(yè)工商數(shù)據(jù)API用哪種?
2024年創(chuàng)建社交媒體帖子的最佳圖像工具API
2024年小型企業(yè)的7個(gè)最佳短信應(yīng)用API
用gin寫簡(jiǎn)單的crud后端API接口
最新LangChain+GLM4開發(fā)AI應(yīng)用程序系列(一):快速入門篇
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)