refactor: Update LCModelComponent to include text_response method and outputs for text and language model
This commit is contained in:
parent
0575541d3b
commit
8d4b9fd470
3 changed files with 27 additions and 31 deletions
|
|
@ -9,12 +9,37 @@ from langflow.base.models.exceptions import get_message_from_openai_exception
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.field_typing import LanguageModel
|
from langflow.field_typing import LanguageModel
|
||||||
from langflow.schema.message import Message
|
from langflow.schema.message import Message
|
||||||
|
from langflow.template.field.base import Output
|
||||||
|
|
||||||
|
|
||||||
class LCModelComponent(Component):
|
class LCModelComponent(Component):
|
||||||
display_name: str = "Model Name"
|
display_name: str = "Model Name"
|
||||||
description: str = "Model Description"
|
description: str = "Model Description"
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
Output(display_name="Text", name="text_output", method="text_response"),
|
||||||
|
Output(display_name="Language Model", name="model_output", method="build_model"),
|
||||||
|
]
|
||||||
|
|
||||||
|
def _validate_outputs(self):
|
||||||
|
# At least these two outputs must be defined
|
||||||
|
required_output_methods = ["text_response", "build_model"]
|
||||||
|
output_names = [output.name for output in self.outputs]
|
||||||
|
for method_name in required_output_methods:
|
||||||
|
if method_name not in output_names:
|
||||||
|
raise ValueError(f"Output with name '{method_name}' must be defined.")
|
||||||
|
elif not hasattr(self, method_name):
|
||||||
|
raise ValueError(f"Method '{method_name}' must be defined.")
|
||||||
|
|
||||||
|
def text_response(self) -> Message:
|
||||||
|
input_value = self.input_value
|
||||||
|
stream = self.stream
|
||||||
|
system_message = self.system_message
|
||||||
|
output = self.build_model()
|
||||||
|
result = self.get_chat_result(output, stream, input_value, system_message)
|
||||||
|
self.status = result
|
||||||
|
return result
|
||||||
|
|
||||||
def get_result(self, runnable: LLM, stream: bool, input_value: str):
|
def get_result(self, runnable: LLM, stream: bool, input_value: str):
|
||||||
"""
|
"""
|
||||||
Retrieves the result from the output of a Runnable object.
|
Retrieves the result from the output of a Runnable object.
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ from pydantic.v1 import SecretStr
|
||||||
from langflow.base.constants import STREAM_INFO_TEXT
|
from langflow.base.constants import STREAM_INFO_TEXT
|
||||||
from langflow.base.models.groq_constants import MODEL_NAMES
|
from langflow.base.models.groq_constants import MODEL_NAMES
|
||||||
from langflow.base.models.model import LCModelComponent
|
from langflow.base.models.model import LCModelComponent
|
||||||
from langflow.field_typing import LanguageModel, Text
|
from langflow.field_typing import LanguageModel
|
||||||
from langflow.io import BoolInput, DropdownInput, FloatInput, IntInput, Output, SecretStrInput, TextInput
|
from langflow.io import BoolInput, DropdownInput, FloatInput, IntInput, SecretStrInput, TextInput
|
||||||
|
|
||||||
|
|
||||||
class GroqModel(LCModelComponent):
|
class GroqModel(LCModelComponent):
|
||||||
|
|
@ -68,20 +68,6 @@ class GroqModel(LCModelComponent):
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
|
||||||
Output(display_name="Text", name="text_output", method="text_response"),
|
|
||||||
Output(display_name="Language Model", name="model_output", method="build_model"),
|
|
||||||
]
|
|
||||||
|
|
||||||
def text_response(self) -> Text:
|
|
||||||
input_value = self.input_value
|
|
||||||
stream = self.stream
|
|
||||||
system_message = self.system_message
|
|
||||||
output = self.build_model()
|
|
||||||
result = self.get_chat_result(output, stream, input_value, system_message)
|
|
||||||
self.status = result
|
|
||||||
return result
|
|
||||||
|
|
||||||
def build_model(self) -> LanguageModel:
|
def build_model(self) -> LanguageModel:
|
||||||
groq_api_key = self.groq_api_key
|
groq_api_key = self.groq_api_key
|
||||||
model_name = self.model_name
|
model_name = self.model_name
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,6 @@ from langflow.inputs import (
|
||||||
SecretStrInput,
|
SecretStrInput,
|
||||||
StrInput,
|
StrInput,
|
||||||
)
|
)
|
||||||
from langflow.schema.message import Message
|
|
||||||
from langflow.template import Output
|
|
||||||
|
|
||||||
|
|
||||||
class OpenAIModelComponent(LCModelComponent):
|
class OpenAIModelComponent(LCModelComponent):
|
||||||
|
|
@ -75,19 +73,6 @@ class OpenAIModelComponent(LCModelComponent):
|
||||||
value=1,
|
value=1,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
outputs = [
|
|
||||||
Output(display_name="Text", name="text_output", method="text_response"),
|
|
||||||
Output(display_name="Language Model", name="model_output", method="build_model"),
|
|
||||||
]
|
|
||||||
|
|
||||||
def text_response(self) -> Message:
|
|
||||||
input_value = self.input_value
|
|
||||||
stream = self.stream
|
|
||||||
system_message = self.system_message
|
|
||||||
output = self.build_model()
|
|
||||||
result = self.get_chat_result(output, stream, input_value, system_message)
|
|
||||||
self.status = result
|
|
||||||
return result
|
|
||||||
|
|
||||||
def build_model(self) -> LanguageModel:
|
def build_model(self) -> LanguageModel:
|
||||||
# self.output_schea is a list of dictionaries
|
# self.output_schea is a list of dictionaries
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue