Moonfanz commited on
Commit
2865f74
·
verified ·
1 Parent(s): f8dfe50

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -2
app.py CHANGED
@@ -368,10 +368,10 @@ def handle_api_error(error, attempt):
368
  logger.warning(f"用户输入因未知原因被阻止")
369
  return 1, None
370
  else:
371
- logger.warning(f"用户输入被阻止,原因未知: {block_reason_str}")
372
  return 1, None
373
  else:
374
- logger.warning(f"用户输入被阻止,原因未知: {full_reason_str}")
375
  return 1, None
376
 
377
  except (IndexError, AttributeError) as e:
@@ -585,6 +585,62 @@ def list_models():
585
  response = {"object": "list", "data": GEMINI_MODELS}
586
  return jsonify(response)
587
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
588
  def keep_alive():
589
  try:
590
  response = requests.get("http://127.0.0.1:7860/", timeout=10)
 
368
  logger.warning(f"用户输入因未知原因被阻止")
369
  return 1, None
370
  else:
371
+ logger.warning(f"用户输入被阻止,原因: {block_reason_str}")
372
  return 1, None
373
  else:
374
+ logger.warning(f"用户输入被阻止,原因: {full_reason_str}")
375
  return 1, None
376
 
377
  except (IndexError, AttributeError) as e:
 
585
  response = {"object": "list", "data": GEMINI_MODELS}
586
  return jsonify(response)
587
 
588
+ @app.route('/hf/v1/embeddings', methods=['POST'])
589
+ def embeddings():
590
+ data = request.get_json()
591
+ model_input = data.get("input", "text-embedding-004")
592
+ model = data.get("model")
593
+ if not model_input:
594
+ return jsonify({"error": "没有提供输入"}), 400
595
+
596
+ if isinstance(model_input, str):
597
+ model_input = [model_input]
598
+
599
+ gemini_request = {
600
+ "model": f"models/{model}",
601
+ "content": {
602
+ "parts": [{"text": text} for text in model_input]
603
+ }
604
+ }
605
+
606
+ gemini_url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:embedContent?key={current_api_key}"
607
+ headers = {"Content-Type": "application/json"}
608
+ try:
609
+ gemini_response = requests.post(gemini_url, json=gemini_request, headers=headers)
610
+ gemini_response.raise_for_status()
611
+
612
+ response_json = gemini_response.json()
613
+ embeddings_data = []
614
+ if 'embedding' in response_json:
615
+ embeddings_data.append({
616
+ "object": "embedding",
617
+ "embedding": response_json['embedding']['values'],
618
+ "index": 0,
619
+ })
620
+ elif 'embeddings' in response_json:
621
+ for i, embedding in enumerate(response_json['embeddings']):
622
+ embeddings_data.append({
623
+ "object": "embedding",
624
+ "embedding": embedding['values'],
625
+ "index": i,
626
+ })
627
+
628
+ client_response = {
629
+ "object": "list",
630
+ "data": embeddings_data,
631
+ "model": model,
632
+ "usage": {
633
+ "prompt_tokens": 0,
634
+ "total_tokens": 0,
635
+ },
636
+ }
637
+ switch_api_key()
638
+ return jsonify(client_response)
639
+
640
+ except requests.exceptions.RequestException as e:
641
+ print(f"请求Embeddings失败↙\: {e}")
642
+ return jsonify({"error": str(e)}), 500
643
+
644
  def keep_alive():
645
  try:
646
  response = requests.get("http://127.0.0.1:7860/", timeout=10)