Underground-Digital/Workflow-Engine
0
1import os2from collections.abc import Generator3 4import pytest5 6from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta7from core.model_runtime.entities.message_entities import AssistantPromptMessage, SystemPromptMessage, UserPromptMessage8from core.model_runtime.errors.validate import CredentialsValidateFailedError9from core.model_runtime.model_providers.replicate.llm.llm import ReplicateLargeLanguageModel10 11 12def test_validate_credentials():13 model = ReplicateLargeLanguageModel()14 15 with pytest.raises(CredentialsValidateFailedError):16 model.validate_credentials(17 model="meta/llama-2-13b-chat",18 credentials={19 "replicate_api_token": "invalid_key",20 "model_version": "f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d",21 },22 )23 24 model.validate_credentials(25 model="meta/llama-2-13b-chat",26 credentials={27 "replicate_api_token": os.environ.get("REPLICATE_API_KEY"),28 "model_version": "f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d",29 },30 )31 32 33def test_invoke_model():34 model = ReplicateLargeLanguageModel()35 36 response = model.invoke(37 model="meta/llama-2-13b-chat",38 credentials={39 "replicate_api_token": os.environ.get("REPLICATE_API_KEY"),40 "model_version": "f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d",41 },42 prompt_messages=[43 SystemPromptMessage(44 content="You are a helpful AI assistant.",45 ),46 UserPromptMessage(content="Who are you?"),47 ],48 model_parameters={49 "temperature": 1.0,50 "top_k": 2,51 "top_p": 0.5,52 },53 stop=["How"],54 stream=False,55 user="abc-123",56 )57 58 assert isinstance(response, LLMResult)59 assert len(response.message.content) > 060 61 62def test_invoke_stream_model():63 model = ReplicateLargeLanguageModel()64 65 response = model.invoke(66 model="mistralai/mixtral-8x7b-instruct-v0.1",67 credentials={68 "replicate_api_token": os.environ.get("REPLICATE_API_KEY"),69 "model_version": "2b56576fcfbe32fa0526897d8385dd3fb3d36ba6fd0dbe033c72886b81ade93e",70 },71 prompt_messages=[72 SystemPromptMessage(73 content="You are a helpful AI assistant.",74 ),75 UserPromptMessage(content="Who are you?"),76 ],77 model_parameters={78 "temperature": 1.0,79 "top_k": 2,80 "top_p": 0.5,81 },82 stop=["How"],83 stream=True,84 user="abc-123",85 )86 87 assert isinstance(response, Generator)88 89 for chunk in response:90 assert isinstance(chunk, LLMResultChunk)91 assert isinstance(chunk.delta, LLMResultChunkDelta)92 assert isinstance(chunk.delta.message, AssistantPromptMessage)93 94 95def test_get_num_tokens():96 model = ReplicateLargeLanguageModel()97 98 num_tokens = model.get_num_tokens(99 model="",100 credentials={101 "replicate_api_token": os.environ.get("REPLICATE_API_KEY"),102 "model_version": "2b56576fcfbe32fa0526897d8385dd3fb3d36ba6fd0dbe033c72886b81ade93e",103 },104 prompt_messages=[105 SystemPromptMessage(106 content="You are a helpful AI assistant.",107 ),108 UserPromptMessage(content="Hello World!"),109 ],110 )111 112 assert num_tokens == 14113 