`嗨,我的代码有问题。 该代码实际上运行良好。我正在收到第一篇文章,然后是另一篇,我不必等待加载所有文章。
但现在我想使用 Flask 在 HTML 中显示这些信息。
我已经创建了主视图,但它只显示第一个摘要。 有人可以帮助我如何使用 Flask 以与在命令行上显示数据相同的方式显示这些数据吗?
例如:
summaryzer.py
import os
import aiohttp
import openai
from dotenv import load_dotenv
from news import News
load_dotenv()
async def get_openAI_data_async(article_text):
openai.api_key = os.getenv('OPEN_AI_KEY')
async with aiohttp.ClientSession() as session:
response = await session.post(
"https://api.openai.com/v1/engines/text-davinci-003/completions",
json={
"prompt": f'Podsumuj ten artykuł w języku polskim w około 100 słowach """ {article_text} """" ',
"temperature": 0.2,
"max_tokens": 256,
"stop": None
},
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {openai.api_key}"
}
)
response_data = await response.json()
return response_data['choices'][0]['text']
async def return_article_summary_async():
news = News()
articles = news.get_news_urls()
summaries = []
for article in articles:
summary = await get_openAI_data_async(article)
summaries.append([summary])
yield summary
它允许我将许多文章传递给 openAI API,然后在 main.py 中使用这段代码返回结果
import asyncio
from summaryzer import return_article_summary_async
async def main_async():
async for summary in return_article_summary_async():
print(summary)
if __name__ == '__main__':
asyncio.run(main_async())
现在 Flask 的主要功能版本只返回第一篇文章
from flask import Flask, render_template
from summaryzer import return_article_summary_async
app = Flask(__name__)
@app.route('/')
async def article_summaries():
async for summary in return_article_summary_async():
return render_template('index.html', summaries=summary)
if __name__ == '__main__':
app.run(debug=True)
<body>
<h1>Article Summaries</h1>
<p>{{ summaries }}</p>
</body>
我试图用 javascript 创造一些魔法,但这不是我的语言,我失败了`