File size: 1,005 Bytes
90f5392
 
aacc39b
90f5392
 
 
 
 
 
aacc39b
90f5392
 
aacc39b
 
 
 
 
90f5392
 
 
 
aacc39b
 
 
 
 
 
 
 
 
 
 
90f5392
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from flask import Flask, request, jsonify
from sentence_transformers import SentenceTransformer, util
import os

app = Flask(__name__)

# 预定义代码片段
CODE = [
    """def sort_list(x): return sorted(x)""",
    # 其他代码片段...
]

# 初始化模型(显示指定缓存路径)
model = SentenceTransformer(
    "flax-sentence-embeddings/st-codesearch-distilroberta-base",
    cache_folder=os.getenv("TRANSFORMERS_CACHE")
)
code_emb = model.encode(CODE, convert_to_tensor=True)

@app.route('/search', methods=['POST'])
def search():
    try:
        query = request.json['query']
        query_emb = model.encode(query, convert_to_tensor=True)
        hits = util.semantic_search(query_emb, code_emb)[0]
        best = hits[0]
        return jsonify({
            'code': CODE[best['corpus_id']],
            'score': float(best['score'])
        })
    except Exception as e:
        return jsonify({"error": str(e)}), 500

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