文科专业,计算机小白,求助大佬们!(已解决)

本人大学英语专业,对代码一窍不通,没学过。但是有时候闲着没事,想搞一个自己的非常简易的ai问答网站,现在已经有了第三方中转api,但是错误连连,求佬们帮助!感激不尽! :smiling_face:
我让AI生成的代码:
目录
project/
app.py
templates/
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI 问答网站</title>
</head>
<body>
    <h1>AI 问答网站</h1>
    <input type="text" id="question" placeholder="请输入你的问题">
    <button onclick="askQuestion()">提问</button>
    <div id="answer"></div>

    <script>
        async function askQuestion() {
            const question = document.getElementById('question').value;
            const response = await fetch('/ask', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ question })
            });
            const data = await response.json();
            document.getElementById('answer').innerText = data.answer;
        }
    </script>
</body>
</html>
from flask import Flask, request, jsonify, render_template
import requests

app = Flask(__name__)

# 你的API URL和API Key
API_URL = 'https://binary.hex.cloudns.be/v1/chat/completions'
API_KEY = 'sk-m1otgm4cNN...(保密,嘿嘿嘿)'

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/ask', methods=['POST'])
def ask():
    data = request.json
    question = data.get('question')

    # 调用第三方API
    headers = {
        'Authorization': f'Bearer {API_KEY}',
        'Content-Type': 'application/json'
    }
    payload = {
        'model': 'gpt-4o',
        'messages': [{'role': 'user', 'content': question}]
    }

    response = requests.post(API_URL, headers=headers, json=payload)
    answer = response.json().get('choices', [{}])[0].get('message', {}).get('content', 'No answer available.')

    return jsonify({'answer': answer})

if __name__ == '__main__':
    app.run(debug=True)

以上是AI生成的全部代码,但出现了以下问题:

然后我就不知道怎么搞了,大佬勿喷,我真是0基础 :face_holding_back_tears:

[date-range from=2024-06-09T00:53:00 to=2024-06-09T00:54:00 timezone=“Asia/Shanghai”]后续:问题已解决,是那个api的问题,我换了个中转站,发现可以用了(代码本身没啥大问题)。
然后也是第一次发帖子,没想到这么多好心人回复我了,哈哈哈,感谢大家的解答

为啥不直接用别人开源的项目 :joy:

2 个赞

要不你先学点基础再用gpt,gpt生成以后的代码还是要审查的

步子迈得有点大,先研究下nextchat、lobechat一类的开源项目吧

1 个赞

事实证明,代码没问题:
1717863734704

控制台看请求 :upside_down_face:,我认为answer为空,前端没有变化,加一行print(answer)

1 个赞

/ask 接口是正常的,所以你的项目没问题,可以用。这个 /hybridaction/zybTrackerStatisticsAction 不是你代码里的,可能是其他浏览器插件的请求

哈?佬,为什么我是这样的:

print(answer) :smiley_cat:

1 个赞

前端问答情况呢,你先打开网页看看实际问答能不能用不就好了,你这显示的只是是啥资源没正常加载吧

image

这个时候终端报啥错就可以看了

所以是我自己URL的问题吗

answer = response.json().get('choices', [{}])[0].get('message', {}).get('content', 'No answer available.')

这不就解决了,debug一下或者print(response.json())看一下内容,get不到content这个key才返回的“'No answer available.”

1 个赞

你确定你apikey对的??

1 个赞

好的,谢谢佬,刚刚加上去了,最后发现是我那个api挂了,我换了一个URL和key就能答了,谢谢各位!
image

换了一个中转站,发现可以了,谢谢佬

代码挺简洁的,先留着,回头我教别人的时候用这个举例 :joy:

歪一下,aicg需要截图