codesearchBase / app.py
Forrest99's picture
Update app.py
0db0051 verified
raw
history blame
1.4 kB
from flask import Flask, request, jsonify
from sentence_transformers import SentenceTransformer, util
app = Flask(__name__)
# 预加载模型(线上部署关键)
model = SentenceTransformer("flax-sentence-embeddings/st-codesearch-distilroberta-base")
code_snippets = [...] # 你的代码片段
code_embeddings = model.encode(code_snippets, convert_to_tensor=True)
@app.route('/v1/search', methods=['POST'])
def api_handler():
"""生产级API端点"""
try:
# 请求验证
if not request.is_json:
return jsonify({"error": "Invalid Content-Type"}), 415
data = request.get_json()
if 'query' not in data:
return jsonify({"error": "Missing query parameter"}), 400
# 执行语义搜索
query = data['query']
query_emb = model.encode(query, convert_to_tensor=True)
results = util.semantic_search(query_emb, code_embeddings, top_k=1)[0]
# 构建响应
return jsonify({
"data": {
"best_match": code_snippets[results[0]['corpus_id']],
"similarity": float(results[0]['score'])
}
})
except Exception as e:
app.logger.error(f"API Error: {str(e)}")
return jsonify({"error": "Internal Server Error"}), 500
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)