app.run(host="0.0.0.0", port=3000, debug=False, access_log=True)

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
from langchain.callbacks.streaming_aiter import AsyncIteratorCallbackHandler

app = Sanic("benchmark")

@app.route("/")
async def index(request):
return text("hello")

@app.route("/test", methods=["POST"])
async def answer(request):
content = request.json["content"]
return json({"text": content})

@app.route("/csv")
async def test(request):
async def sample_streaming_fn(response):
await response.write("foo,")
await response.write("bar")

return ResponseStream(sample_streaming_fn, content_type="text/csv")

@app.route("/answer/async", methods=["POST"])
async def answer_async(request):
content = request.json["content"]

async def predict(response):
handler = AsyncIteratorCallbackHandler()
model_message = [HumanMessage(content=content)]
chat = ChatOpenAI(streaming=True,
callbacks=[handler],
temperature=0,
openai_api_key="")
asyncio.create_task(chat.apredict_messages(model_message))
async for token in handler.aiter():
await response.write(f"data: {token}nn")

return ResponseStream(predict, content_type="text/event-stream")

if __name__ == "__main__":
app.run(host="0.0.0.0", port=3000, debug=False, access_log=True)

FastAPI框架

if name == "main":
uvicorn.run(app, host="0.0.0.0", port=8000, log_level="info")

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
from langchain.callbacks.streaming_aiter import AsyncIteratorCallbackHandler

app = FastAPI(description="langchain_streaming")

class Item(BaseModel):
text: str

class Question(BaseModel):
text: str

async def fake_video_streamer():
for i in range(10):
yield b"some fake video bytesn"

@app.get("/")
async def main():
return StreamingResponse(fake_video_streamer())

@app.post("/test")
async def test(item: Item):
return JSONResponse({"content": item.text})

@app.post("/answer/async")
async def answer_async(q: Question):
content = q.text

async def predict():
handler = AsyncIteratorCallbackHandler()
model_message = [HumanMessage(content=content)]
chat = ChatOpenAI(streaming=True,
callbacks=[handler],
temperature=0,
openai_api_key="sk-xxx")
asyncio.create_task(chat.apredict_messages(model_message))
async for token in handler.aiter():
yield f"data: {token}nn"

return StreamingResponse(predict())

if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, log_level="info")

可視化

可視化功能采用HTML,頁面較為簡陋,因筆者的HTML知識有限(甚至可憐)。

HTML文件(form.html):

    

question:





{{ answer }}

Python代碼:

if name == ‘main‘:
uvicorn.run(app, host=’0.0.0.0’, port=8080)

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
from langchain.callbacks.streaming_aiter import AsyncIteratorCallbackHandler

app = FastAPI()
template = Jinja2Templates(directory='template')

@app.get('/')

# 接受get請求
async def get_user(request: Request):
return template.TemplateResponse('form.html', {'request': request})

@app.post('/qa/')

# 接受post請求
async def get_user(request: Request,
question: str = Form(...)
):

async def predict():
handler = AsyncIteratorCallbackHandler()
model_message = [HumanMessage(content=question)]
chat = ChatOpenAI(streaming=True,
callbacks=[handler],
temperature=0,
openai_api_key="sk-xxx")
asyncio.create_task(chat.apredict_messages(model_message))
async for token in handler.aiter():
answer = token.replace("n", "
")
yield answer

yield '
返回'

return StreamingResponse(predict(), media_type='text/html')

if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8080)

演示效果如下面的視頻:


文章轉自微信公眾號@NLP奇幻之旅

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
API 腳本完全指南:概念、應用與實用工具
下一篇
根據Swagger OpenAPI規范生成TypeScript類型
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
国产精品剧情在线亚洲| 欧美一级艳片视频免费观看| 国产欧美视频一区二区| 五月开心婷婷久久| 欧美一区二区三区白人| 免费在线一区观看| 色8久久人人97超碰香蕉987| 一区二区三区高清| 欧美成人精精品一区二区频| 成人高清视频在线观看| 久久久青草青青国产亚洲免观| 精品在线播放免费| 最新日韩在线视频| 久久久亚洲精品一区二区三区| 高清日韩电视剧大全免费| 日韩高清一级片| 4438x成人网最大色成网站| 青青青伊人色综合久久| 亚洲一区二区三区不卡国产欧美 | 大陆成人av片| 亚洲五码中文字幕| 国产精品久久久久婷婷| 欧美aⅴ一区二区三区视频| 久久这里只有精品首页| 欧美一级日韩免费不卡| 日本黄色一区二区| 在线观看区一区二| 日韩免费一区二区| 国产精品不卡一区| 午夜精品福利一区二区蜜股av| 亚洲精品国产第一综合99久久 | 偷窥少妇高潮呻吟av久久免费| 国产精品美女久久久久久2018| 中文字幕一区二区三中文字幕| 国产精品久久久久久久裸模| 久久久久久久久免费| 中文字幕永久在线不卡| 日本在线不卡视频一二三区| 午夜精品福利久久久| 久久精品国产99| 欧美一区二区福利在线| 国产精品乱码人人做人人爱| 午夜婷婷国产麻豆精品| www.欧美色图| 欧美一区二区三区视频免费 | 国产精品一区二区久久精品爱涩| www.爱久久.com| 26uuu久久综合| 国产日韩精品一区| 奇米在线7777在线精品| 91福利国产成人精品照片| 日本韩国欧美国产| 日韩毛片在线免费观看| 国产·精品毛片| 久久久噜噜噜久久人人看| 亚欧色一区w666天堂| 一本大道久久a久久精二百 | 国产一区二区91| 亚洲欧洲在线观看av| 大尺度一区二区| 精品三级av在线| 成人精品国产免费网站| 亚洲欧洲一区二区在线播放| 亚洲女性喷水在线观看一区| 欧美艳星brazzers| 国产精品99久久久久| av电影在线观看不卡| 亚洲精品欧美专区| 国产精品萝li| 日韩三级伦理片妻子的秘密按摩| 日韩在线观看一区二区| 精品噜噜噜噜久久久久久久久试看 | 亚洲图片一区二区| 欧美videofree性高清杂交| 午夜欧美视频在线观看| 99视频有精品| 久久97超碰国产精品超碰| 亚洲欧美日韩小说| 国产精品丝袜一区| 久久综合九色综合欧美98| 欧美日韩电影在线播放| 91一区二区三区在线播放| 成人福利在线看| 国产综合久久久久久久久久久久| 视频一区二区中文字幕| 免费成人美女在线观看.| 亚洲国产欧美一区二区三区丁香婷| 国产精品久久久久一区| 久久伊人中文字幕| 欧美成人伊人久久综合网| 精品久久久久久综合日本欧美| 91精品黄色片免费大全| 久久免费国产精品| 精品国产人成亚洲区| 久久久国产精华| 国产精品伦一区二区三级视频| 欧美日韩五月天| 久久精品亚洲乱码伦伦中文 | 国产精品欧美一区喷水| 欧美国产一区二区| 国产精品久久免费看| 国产精品久久久久影院亚瑟| 日本特黄久久久高潮| 国产一区福利在线| 在线观看av不卡| 日精品一区二区| 国产精品一区二区三区99| 日韩高清一区二区| 成人国产免费视频| 欧美国产1区2区| 国产精品影音先锋| www.亚洲激情.com| 91精品国产综合久久精品性色| 91精品国产91久久久久久一区二区| 中文无字幕一区二区三区| 国内精品视频666| 日韩一区二区三区免费看 | 国产日韩视频一区二区三区| 亚洲精品国产无套在线观| av欧美精品.com| 1000部国产精品成人观看| 成人91在线观看| 亚洲欧美成aⅴ人在线观看 | 天堂久久久久va久久久久| 北条麻妃国产九九精品视频| 国产精品美女久久福利网站| 色婷婷激情一区二区三区| 日韩av高清在线观看| 日韩亚洲欧美成人一区| 久久福利视频一区二区| 国产欧美精品一区二区三区四区| 麻豆精品视频在线观看视频| 欧美成人女星排名| 99精品久久久久久| 国精产品一区一区三区mba视频| 亚洲蜜桃精久久久久久久| 欧美在线视频日韩| 国产精品综合一区二区三区| 亚洲男帅同性gay1069| 国产偷国产偷精品高清尤物| 在线观看免费成人| 99国产欧美久久久精品| 日本美女一区二区| 亚洲伊人色欲综合网| 欧美一区二区三区四区视频| 久久99精品网久久| 日韩和的一区二区| 国产精品人人做人人爽人人添| 国内外成人在线视频| 婷婷丁香激情综合| 日本麻豆一区二区三区视频| 亚洲成人动漫精品| 国产麻豆91精品| 99久久精品国产一区二区三区| 99久久婷婷国产| 欧美色欧美亚洲另类二区| 色婷婷久久久久swag精品| 欧美乱妇23p| 国产精品成人一区二区三区夜夜夜| 中文字幕佐山爱一区二区免费| 欧美日韩一级大片网址| 欧美群妇大交群的观看方式| 国产色一区二区| 日韩不卡一区二区| 成人动漫一区二区在线| 欧美影视一区二区三区| 精品久久99ma| 日韩中文字幕麻豆| 95精品视频在线| 国产日产精品1区| 日韩高清不卡在线| 91精品国产一区二区| 91黄色免费网站| 在线不卡一区二区| 欧美电影一区二区| 午夜精品福利在线| 91精品婷婷国产综合久久竹菊| 一区二区三区**美女毛片| 亚洲va欧美va国产va天堂影院| 国产精品久久久久7777按摩 | 91久久精品一区二区三| 久久久久久久久伊人| 成人av手机在线观看| 国产精品美女久久久久av爽李琼| 午夜精品一区在线观看| 国产老妇另类xxxxx| 欧美韩国日本综合| 色偷偷久久人人79超碰人人澡| 欧美在线观看视频一区二区三区| 五月综合激情网| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美蜜桃一区二区三区| 久久国产视频网| 久久精品一区蜜桃臀影院| 99久久久国产精品| 国模少妇一区二区三区| 久久久影视传媒| 精品一区二区三区免费毛片爱| 日韩一区二区在线看片| 91丨九色丨蝌蚪富婆spa|