feat: add thought to response

This commit is contained in:
Ibis Prevedello 2023-03-05 23:32:42 -03:00
commit c333f57a0c
3 changed files with 24 additions and 10 deletions

View file

@ -3,6 +3,6 @@
poetry remove langchain poetry remove langchain
docker build -t logspace/backend_build -f build.Dockerfile . docker build -t logspace/backend_build -f build.Dockerfile .
VERSION=$(toml get --toml-path pyproject.toml tool.poetry.version) VERSION=$(toml get --toml-path pyproject.toml tool.poetry.version)
docker build --build-arg VERSION=$VERSION -t logspace/langflow_backend:$VERSION . docker build --build-arg VERSION=$VERSION -t ibiscp/langflow_backend:$VERSION .
# docker push logspace/langflow_backend:$VERSION docker push ibiscp/langflow_backend:$VERSION
# poetry add --editable ../../../langchain # poetry add --editable ../../../langchain

View file

@ -8,6 +8,9 @@ from langchain.llms.loading import load_llm_from_config
from langchain.prompts.loading import load_prompt_from_config from langchain.prompts.loading import load_prompt_from_config
from typing import Any from typing import Any
import io
import contextlib
import re
# build router # build router
@ -77,12 +80,12 @@ def get_load(data: dict[str, Any]):
type_list = get_type_list() type_list = get_type_list()
# Substitute ZeroShotPromt with PromptTemplate # Substitute ZeroShotPromt with PromptTemplate
for node in data['nodes']: for node in data["nodes"]:
if node["data"]["type"] == "ZeroShotPrompt": if node["data"]["type"] == "ZeroShotPrompt":
# Build Prompt Template # Build Prompt Template
tools = [ tools = [
tool tool
for tool in data['nodes'] for tool in data["nodes"]
if tool["type"] != "chatOutputNode" if tool["type"] != "chatOutputNode"
and "Tool" in tool["data"]["node"]["base_classes"] and "Tool" in tool["data"]["node"]["base_classes"]
] ]
@ -104,17 +107,28 @@ def get_load(data: dict[str, Any]):
if extracted_json["_type"] in type_list["agents"]: if extracted_json["_type"] in type_list["agents"]:
loaded = load_agent_executor_from_config(extracted_json) loaded = load_agent_executor_from_config(extracted_json)
return {"result": loaded.run(message)} with io.StringIO() as output_buffer, contextlib.redirect_stdout(output_buffer):
result = loaded.run(message)
thought = output_buffer.getvalue()
elif extracted_json["_type"] in type_list["chains"]: elif extracted_json["_type"] in type_list["chains"]:
loaded = load_chain_from_config(extracted_json) loaded = load_chain_from_config(extracted_json)
return {"result": loaded.run(message)} with io.StringIO() as output_buffer, contextlib.redirect_stdout(output_buffer):
result = loaded.run(message)
thought = output_buffer.getvalue()
elif extracted_json["_type"] in type_list["llms"]: elif extracted_json["_type"] in type_list["llms"]:
loaded = load_llm_from_config(extracted_json) loaded = load_llm_from_config(extracted_json)
return {"result": loaded(message)} with io.StringIO() as output_buffer, contextlib.redirect_stdout(output_buffer):
result = loaded(message)
thought = output_buffer.getvalue()
else: else:
return {"result": "Error: Type should be either agent, chain or llm"} result = "Error: Type should be either agent, chain or llm"
thought = ""
return {"result": result, "thought": re.sub(r'\x1b\[([0-9,A-Z]{1,2}(;[0-9,A-Z]{1,2})?)?[m|K]', '', thought).strip()}
def build_prompt_template(prompt, tools): def build_prompt_template(prompt, tools):

View file

@ -2,5 +2,5 @@
VERSION="0.1.0" VERSION="0.1.0"
docker build -t logspace/frontend_build -f build.Dockerfile . docker build -t logspace/frontend_build -f build.Dockerfile .
docker build --build-arg VERSION=$VERSION -t logspace/langflow_frontend:$VERSION . docker build --build-arg VERSION=$VERSION -t ibiscp/langflow_frontend:$VERSION .
# docker push logspace/langflow_frontend:$VERSION docker push ibiscp/langflow_frontend:$VERSION