|
import os |
|
import pytest |
|
from fastapi.testclient import TestClient |
|
import sys |
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
|
from main import app |
|
|
|
@pytest.fixture |
|
def test_client(): |
|
with TestClient(app) as client: |
|
yield client |
|
|
|
@pytest.fixture |
|
def api_key(): |
|
return os.environ.get("API") |
|
|
|
@pytest.fixture |
|
def get_model(): |
|
return os.environ.get("MODEL", "claude-3-5-sonnet") |
|
|
|
def test_request_model(test_client, api_key, get_model): |
|
request_data = { |
|
"model": get_model, |
|
"messages": [ |
|
{ |
|
"role": "user", |
|
"content": "say test" |
|
} |
|
], |
|
"max_tokens": 4096, |
|
"stream": True, |
|
"temperature": 0.5, |
|
"top_p": 1.0, |
|
"presence_penalty": 0.0, |
|
"frequency_penalty": 0.0, |
|
"n": 1, |
|
"user": "user", |
|
"tools": [ |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_search_results", |
|
"description": "Search Google to enhance knowledge.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"prompt": { |
|
"type": "string", |
|
"description": "The prompt to search." |
|
} |
|
}, |
|
"required": ["prompt"] |
|
} |
|
} |
|
}, |
|
{ |
|
"type": "function", |
|
"function": { |
|
"name": "get_url_content", |
|
"description": "Get the webpage content of a URL.", |
|
"parameters": { |
|
"type": "object", |
|
"properties": { |
|
"url": { |
|
"type": "string", |
|
"description": "The URL to request." |
|
} |
|
}, |
|
"required": ["url"] |
|
} |
|
} |
|
} |
|
], |
|
"tool_choice": "auto" |
|
} |
|
|
|
headers = { |
|
'Content-Type': 'application/json', |
|
"Authorization": f"Bearer {api_key}" |
|
} |
|
|
|
response = test_client.post("/v1/chat/completions", json=request_data, headers=headers) |
|
for line in response.iter_lines(): |
|
print(line.lstrip("data: ")) |
|
assert 200 <= response.status_code < 300 |
|
|
|
if __name__ == "__main__": |
|
pytest.main(["-s", "test/provider_test.py"]) |