test_llm.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import os
  2. from collections.abc import Generator
  3. import pytest
  4. from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta
  5. from core.model_runtime.entities.message_entities import AssistantPromptMessage, SystemPromptMessage, UserPromptMessage
  6. from core.model_runtime.errors.validate import CredentialsValidateFailedError
  7. from core.model_runtime.model_providers.siliconflow.llm.llm import SiliconflowLargeLanguageModel
  8. def test_validate_credentials():
  9. model = SiliconflowLargeLanguageModel()
  10. with pytest.raises(CredentialsValidateFailedError):
  11. model.validate_credentials(model="deepseek-ai/DeepSeek-V2-Chat", credentials={"api_key": "invalid_key"})
  12. model.validate_credentials(model="deepseek-ai/DeepSeek-V2-Chat", credentials={"api_key": os.environ.get("API_KEY")})
  13. def test_invoke_model():
  14. model = SiliconflowLargeLanguageModel()
  15. response = model.invoke(
  16. model="deepseek-ai/DeepSeek-V2-Chat",
  17. credentials={"api_key": os.environ.get("API_KEY")},
  18. prompt_messages=[UserPromptMessage(content="Who are you?")],
  19. model_parameters={"temperature": 0.5, "max_tokens": 10},
  20. stop=["How"],
  21. stream=False,
  22. user="abc-123",
  23. )
  24. assert isinstance(response, LLMResult)
  25. assert len(response.message.content) > 0
  26. def test_invoke_stream_model():
  27. model = SiliconflowLargeLanguageModel()
  28. response = model.invoke(
  29. model="deepseek-ai/DeepSeek-V2-Chat",
  30. credentials={"api_key": os.environ.get("API_KEY")},
  31. prompt_messages=[UserPromptMessage(content="Hello World!")],
  32. model_parameters={"temperature": 0.5, "max_tokens": 100, "seed": 1234},
  33. stream=True,
  34. user="abc-123",
  35. )
  36. assert isinstance(response, Generator)
  37. for chunk in response:
  38. assert isinstance(chunk, LLMResultChunk)
  39. assert isinstance(chunk.delta, LLMResultChunkDelta)
  40. assert isinstance(chunk.delta.message, AssistantPromptMessage)
  41. assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True
  42. def test_get_num_tokens():
  43. model = SiliconflowLargeLanguageModel()
  44. num_tokens = model.get_num_tokens(
  45. model="deepseek-ai/DeepSeek-V2-Chat",
  46. credentials={"api_key": os.environ.get("API_KEY")},
  47. prompt_messages=[
  48. SystemPromptMessage(
  49. content="You are a helpful AI assistant.",
  50. ),
  51. UserPromptMessage(content="Hello World!"),
  52. ],
  53. )
  54. assert num_tokens == 12