You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					89 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					89 lines
				
				2.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import io
							 | 
						||
| 
								 | 
							
								import json
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import openai
							 | 
						||
| 
								 | 
							
								from openai import error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# FILE TESTS
							 | 
						||
| 
								 | 
							
								def test_file_upload():
							 | 
						||
| 
								 | 
							
								    result = openai.File.create(
							 | 
						||
| 
								 | 
							
								        file=io.StringIO(
							 | 
						||
| 
								 | 
							
								            json.dumps({"prompt": "test file data", "completion": "tada"})
							 | 
						||
| 
								 | 
							
								        ),
							 | 
						||
| 
								 | 
							
								        purpose="fine-tune",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    assert result.purpose == "fine-tune"
							 | 
						||
| 
								 | 
							
								    assert "id" in result
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    result = openai.File.retrieve(id=result.id)
							 | 
						||
| 
								 | 
							
								    assert result.status == "uploaded"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# CHAT COMPLETION TESTS
							 | 
						||
| 
								 | 
							
								def test_chat_completions():
							 | 
						||
| 
								 | 
							
								    result = openai.ChatCompletion.create(
							 | 
						||
| 
								 | 
							
								        model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello!"}]
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    assert len(result.choices) == 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_chat_completions_multiple():
							 | 
						||
| 
								 | 
							
								    result = openai.ChatCompletion.create(
							 | 
						||
| 
								 | 
							
								        model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello!"}], n=5
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    assert len(result.choices) == 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_chat_completions_streaming():
							 | 
						||
| 
								 | 
							
								    result = None
							 | 
						||
| 
								 | 
							
								    events = openai.ChatCompletion.create(
							 | 
						||
| 
								 | 
							
								        model="gpt-3.5-turbo",
							 | 
						||
| 
								 | 
							
								        messages=[{"role": "user", "content": "Hello!"}],
							 | 
						||
| 
								 | 
							
								        stream=True,
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    for result in events:
							 | 
						||
| 
								 | 
							
								        assert len(result.choices) == 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# COMPLETION TESTS
							 | 
						||
| 
								 | 
							
								def test_completions():
							 | 
						||
| 
								 | 
							
								    result = openai.Completion.create(prompt="This was a test", n=5, engine="ada")
							 | 
						||
| 
								 | 
							
								    assert len(result.choices) == 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_completions_multiple_prompts():
							 | 
						||
| 
								 | 
							
								    result = openai.Completion.create(
							 | 
						||
| 
								 | 
							
								        prompt=["This was a test", "This was another test"], n=5, engine="ada"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    assert len(result.choices) == 10
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_completions_model():
							 | 
						||
| 
								 | 
							
								    result = openai.Completion.create(prompt="This was a test", n=5, model="ada")
							 | 
						||
| 
								 | 
							
								    assert len(result.choices) == 5
							 | 
						||
| 
								 | 
							
								    assert result.model.startswith("ada")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_timeout_raises_error():
							 | 
						||
| 
								 | 
							
								    # A query that should take awhile to return
							 | 
						||
| 
								 | 
							
								    with pytest.raises(error.Timeout):
							 | 
						||
| 
								 | 
							
								        openai.Completion.create(
							 | 
						||
| 
								 | 
							
								            prompt="test" * 1000,
							 | 
						||
| 
								 | 
							
								            n=10,
							 | 
						||
| 
								 | 
							
								            model="ada",
							 | 
						||
| 
								 | 
							
								            max_tokens=100,
							 | 
						||
| 
								 | 
							
								            request_timeout=0.01,
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_timeout_does_not_error():
							 | 
						||
| 
								 | 
							
								    # A query that should be fast
							 | 
						||
| 
								 | 
							
								    openai.Completion.create(
							 | 
						||
| 
								 | 
							
								        prompt="test",
							 | 
						||
| 
								 | 
							
								        model="ada",
							 | 
						||
| 
								 | 
							
								        request_timeout=10,
							 | 
						||
| 
								 | 
							
								    )
							 |