🔧 refactor(constants.py, conftest.py): improve code structure and readability

🔨 refactor(constants.py): make YourComponent inherit from CustomComponent for better code reuse and structure

🔨 refactor(conftest.py): restructure custom_chain fixture for better readability and maintainability
This commit is contained in:
gustavoschaedler 2023-07-14 18:29:54 +01:00
commit cc2dbe1490
2 changed files with 106 additions and 107 deletions

View file

@ -25,17 +25,19 @@ LANGCHAIN_BASE_TYPES = {
DEFAULT_CUSTOM_COMPONENT_CODE = """ DEFAULT_CUSTOM_COMPONENT_CODE = """
from langflow import Prompt from langflow import Prompt
from langflow.interface.custom.custom_component import CustomComponent
from langchain.llms.base import BaseLLM from langchain.llms.base import BaseLLM
from langchain.chains import LLMChain from langchain.chains import LLMChain
from langflow.interface.custom import CustomComponent
from langchain import PromptTemplate from langchain import PromptTemplate
from langchain.schema import Document from langchain.schema import Document
import requests import requests
class YourComponent: class YourComponent(CustomComponent):
display_name: str = "Your Component" #display_name: str = "Your Component"
description: str = "Your description" #description: str = "Your description"
field_config = { "url": { "multiline": True, "required": True } } #field_config = { "url": { "multiline": True, "required": True } }
def build(self, url: str, llm: BaseLLM, template: Prompt) -> Document: def build(self, url: str, llm: BaseLLM, template: Prompt) -> Document:
response = requests.get(url) response = requests.get(url)
@ -44,7 +46,3 @@ class YourComponent:
result = chain.run(response.text[:300]) result = chain.run(response.text[:300])
return Document(page_content=str(result)) return Document(page_content=str(result))
""" """
# Create a new class that can be used as a type
# that returns type "prompt" if we get a certain param

View file

@ -120,8 +120,8 @@ def client_fixture(session: Session): #
@pytest.fixture @pytest.fixture
def custom_chain(): def custom_chain():
return '''from __future__ import annotations return '''
from __future__ import annotations
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
from pydantic import Extra from pydantic import Extra
@ -232,6 +232,7 @@ def custom_chain():
"llm": {"field_type": "BaseLanguageModel"}, "llm": {"field_type": "BaseLanguageModel"},
} }
def build(self, prompt, llm, input: str) -> Document: def build(self, prompt: StringPromptTemplate, llm: BaseLanguageModel, input: str) -> Document:
chain = MyCustomChain(prompt=prompt, llm=llm) chain = MyCustomChain(prompt=prompt, llm=llm)
return chain(input)''' return chain(input)
'''