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.field_typing import LanguageModel
|
||||
from langflow.schema.message import Message
|
||||
from langflow.template.field.base import Output
|
||||
|
||||
|
||||
class LCModelComponent(Component):
|
||||
display_name: str = "Model Name"
|
||||
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):
|
||||
"""
|
||||
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.models.groq_constants import MODEL_NAMES
|
||||
from langflow.base.models.model import LCModelComponent
|
||||
from langflow.field_typing import LanguageModel, Text
|
||||
from langflow.io import BoolInput, DropdownInput, FloatInput, IntInput, Output, SecretStrInput, TextInput
|
||||
from langflow.field_typing import LanguageModel
|
||||
from langflow.io import BoolInput, DropdownInput, FloatInput, IntInput, SecretStrInput, TextInput
|
||||
|
||||
|
||||
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:
|
||||
groq_api_key = self.groq_api_key
|
||||
model_name = self.model_name
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@ from langflow.inputs import (
|
|||
SecretStrInput,
|
||||
StrInput,
|
||||
)
|
||||
from langflow.schema.message import Message
|
||||
from langflow.template import Output
|
||||
|
||||
|
||||
class OpenAIModelComponent(LCModelComponent):
|
||||
|
|
@ -75,19 +73,6 @@ class OpenAIModelComponent(LCModelComponent):
|
|||
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:
|
||||
# self.output_schea is a list of dictionaries
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue