mirror of
https://github.com/lancedb/lancedb.git
synced 2025-12-23 05:19:58 +00:00
This is done as setup for a PR that will fix the OpenAI dependency issue. * [x] FTS examples * [x] Setup mock openai * [x] Ran `npm audit fix` * [x] sentences embeddings test * [x] Double check formatting of docs examples
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright The LanceDB Authors
|
|
"""A zero-dependency mock OpenAI embeddings API endpoint for testing purposes."""
|
|
import argparse
|
|
import json
|
|
import http.server
|
|
|
|
|
|
class MockOpenAIRequestHandler(http.server.BaseHTTPRequestHandler):
|
|
def do_POST(self):
|
|
content_length = int(self.headers["Content-Length"])
|
|
post_data = self.rfile.read(content_length)
|
|
post_data = json.loads(post_data.decode("utf-8"))
|
|
# See: https://platform.openai.com/docs/api-reference/embeddings/create
|
|
|
|
if isinstance(post_data["input"], str):
|
|
num_inputs = 1
|
|
else:
|
|
num_inputs = len(post_data["input"])
|
|
|
|
model = post_data.get("model", "text-embedding-ada-002")
|
|
|
|
data = []
|
|
for i in range(num_inputs):
|
|
data.append({
|
|
"object": "embedding",
|
|
"embedding": [0.1] * 1536,
|
|
"index": i,
|
|
})
|
|
|
|
response = {
|
|
"object": "list",
|
|
"data": data,
|
|
"model": model,
|
|
"usage": {
|
|
"prompt_tokens": 0,
|
|
"total_tokens": 0,
|
|
}
|
|
}
|
|
|
|
self.send_response(200)
|
|
self.send_header("Content-type", "application/json")
|
|
self.end_headers()
|
|
self.wfile.write(json.dumps(response).encode("utf-8"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Mock OpenAI embeddings API endpoint")
|
|
parser.add_argument("--port", type=int, default=8000, help="Port to listen on")
|
|
args = parser.parse_args()
|
|
port = args.port
|
|
|
|
print(f"server started on port {port}. Press Ctrl-C to stop.")
|
|
print(f"To use, set OPENAI_BASE_URL=http://localhost:{port} in your environment.")
|
|
|
|
with http.server.HTTPServer(("0.0.0.0", port), MockOpenAIRequestHandler) as server:
|
|
server.serve_forever()
|