Revert "Merge branch 'main' into release"

This reverts commit 4dea0f6690, reversing
changes made to 597b2153a3.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-08-08 15:13:22 -03:00
commit cf8c0601eb
8 changed files with 113 additions and 83 deletions

View file

@ -155,7 +155,7 @@ async def stream_build(flow_id: str):
) )
else: else:
input_keys_response = { input_keys_response = {
"input_keys": {}, "input_keys": None,
"memory_keys": [], "memory_keys": [],
"handle_keys": [], "handle_keys": [],
} }

View file

@ -117,7 +117,7 @@ class ChatManager:
self, client_id: str, payload: Dict, langchain_object: Any self, client_id: str, payload: Dict, langchain_object: Any
): ):
# Process the graph data and chat message # Process the graph data and chat message
chat_inputs = payload.pop("inputs", "") chat_inputs = payload.pop("inputs", {})
chat_inputs = ChatMessage(message=chat_inputs) chat_inputs = ChatMessage(message=chat_inputs)
self.chat_history.add_message(client_id, chat_inputs) self.chat_history.add_message(client_id, chat_inputs)

View file

@ -21,9 +21,9 @@ async def process_graph(
# Generate result and thought # Generate result and thought
try: try:
if not chat_inputs.message: if chat_inputs.message is None:
logger.debug("No message provided") logger.debug("No message provided")
raise ValueError("No message provided") chat_inputs.message = {}
logger.debug("Generating result and thought") logger.debug("Generating result and thought")
result, intermediate_steps = await get_result_and_steps( result, intermediate_steps = await get_result_and_steps(

View file

@ -171,11 +171,7 @@ def initialize_pinecone(class_object: Type[Pinecone], params: dict):
def initialize_chroma(class_object: Type[Chroma], params: dict): def initialize_chroma(class_object: Type[Chroma], params: dict):
"""Initialize a ChromaDB object from the params""" """Initialize a ChromaDB object from the params"""
if ( # type: ignore if ( # type: ignore
"chroma_server_host" in params "chroma_server_host" in params or "chroma_server_http_port" in params
or "chroma_server_http_port" in params
or "chroma_server_ssl_enabled" in params
or "chroma_server_grpc_port" in params
or "chroma_server_cors_allow_origins" in params
): ):
import chromadb # type: ignore import chromadb # type: ignore
@ -186,6 +182,14 @@ def initialize_chroma(class_object: Type[Chroma], params: dict):
} }
chroma_settings = chromadb.config.Settings(**settings_params) chroma_settings = chromadb.config.Settings(**settings_params)
params["client_settings"] = chroma_settings params["client_settings"] = chroma_settings
else:
# remove all chroma_server_ keys from params
params = {
key: value
for key, value in params.items()
if not key.startswith("chroma_server_")
}
persist = params.pop("persist", False) persist = params.pop("persist", False)
if not docs_in_params(params): if not docs_in_params(params):
params.pop("documents", None) params.pop("documents", None)

View file

@ -82,13 +82,15 @@ export default function BuildTrigger({
const parsedData = JSON.parse(event.data); const parsedData = JSON.parse(event.data);
// if the event is the end of the stream, close the connection // if the event is the end of the stream, close the connection
if (parsedData.end_of_stream) { if (parsedData.end_of_stream) {
// Close the connection and finish
finished = true;
eventSource.close(); eventSource.close();
return; return;
} else if (parsedData.log) { } else if (parsedData.log) {
// If the event is a log, log it // If the event is a log, log it
setSuccessData({ title: parsedData.log }); setSuccessData({ title: parsedData.log });
} else if (parsedData.input_keys) { } else if (parsedData.input_keys !== undefined) {
setTabsState((old) => { setTabsState((old) => {
return { return {
...old, ...old,

View file

@ -62,8 +62,7 @@ export default function Chat({ flow }: ChatType) {
tabsState && tabsState &&
tabsState[flow.id] && tabsState[flow.id] &&
tabsState[flow.id].formKeysData && tabsState[flow.id].formKeysData &&
tabsState[flow.id].formKeysData.input_keys && tabsState[flow.id].formKeysData.input_keys !== null
Object.keys(tabsState[flow.id].formKeysData.input_keys).length > 0
) { ) {
setCanOpen(true); setCanOpen(true);
} else { } else {

View file

@ -67,14 +67,17 @@ export default function FormModal({
const id = useRef(flow.id); const id = useRef(flow.id);
const tabsStateFlowId = tabsState[flow.id]; const tabsStateFlowId = tabsState[flow.id];
const tabsStateFlowIdFormKeysData = tabsStateFlowId.formKeysData; const tabsStateFlowIdFormKeysData = tabsStateFlowId.formKeysData;
const [chatKey, setChatKey] = useState( const [chatKey, setChatKey] = useState(() => {
Object.keys(tabsState[flow.id].formKeysData.input_keys).find( if (tabsState[flow.id]?.formKeysData?.input_keys) {
return Object.keys(tabsState[flow.id].formKeysData.input_keys).find(
(k) => (k) =>
!tabsState[flow.id].formKeysData.handle_keys.some((j) => j === k) && !tabsState[flow.id].formKeysData.handle_keys.some((j) => j === k) &&
tabsState[flow.id].formKeysData.input_keys[k] === "" tabsState[flow.id].formKeysData.input_keys[k] === ""
)
); );
}
// TODO: return a sensible default
return "";
});
useEffect(() => { useEffect(() => {
if (messagesRef.current) { if (messagesRef.current) {
messagesRef.current.scrollTop = messagesRef.current.scrollHeight; messagesRef.current.scrollTop = messagesRef.current.scrollHeight;
@ -419,8 +422,10 @@ export default function FormModal({
</div> </div>
</div> </div>
{Object.keys(tabsState[id.current].formKeysData.input_keys).map( {tabsState[id.current]?.formKeysData?.input_keys
(i, k) => ( ? Object.keys(
tabsState[id.current].formKeysData.input_keys
).map((i, k) => (
<div className="file-component-accordion-div" key={k}> <div className="file-component-accordion-div" key={k}>
<AccordionComponent <AccordionComponent
trigger={ trigger={
@ -467,9 +472,9 @@ export default function FormModal({
onChange={(e) => { onChange={(e) => {
setTabsState((old) => { setTabsState((old) => {
let newTabsState = _.cloneDeep(old); let newTabsState = _.cloneDeep(old);
newTabsState[id.current].formKeysData.input_keys[ newTabsState[
i id.current
] = e.target.value; ].formKeysData.input_keys[i] = e.target.value;
return newTabsState; return newTabsState;
}); });
}} }}
@ -479,8 +484,8 @@ export default function FormModal({
</div> </div>
</AccordionComponent> </AccordionComponent>
</div> </div>
) ))
)} : null}
{tabsState[id.current].formKeysData.memory_keys.map((i, k) => ( {tabsState[id.current].formKeysData.memory_keys.map((i, k) => (
<div className="file-component-accordion-div" key={k}> <div className="file-component-accordion-div" key={k}>
<AccordionComponent <AccordionComponent

View file

@ -248,6 +248,27 @@ export function buildTweakObject(tweak) {
return tweakString; return tweakString;
} }
/**
* Function to get Chat Input Field
* @param {FlowType} flow - The current flow.
* @param {TabsState} tabsState - The current tabs state.
* @returns {string} - The chat input field
*/
export function getChatInputField(flow: FlowType, tabsState?: TabsState) {
let chat_input_field = "text";
if (
tabsState[flow.id] &&
tabsState[flow.id].formKeysData &&
tabsState[flow.id].formKeysData.input_keys
) {
chat_input_field = Object.keys(
tabsState[flow.id].formKeysData.input_keys
)[0];
}
return chat_input_field;
}
/** /**
* Function to get the python code for the API * Function to get the python code for the API
* @param {string} flowId - The id of the flow * @param {string} flowId - The id of the flow
@ -365,6 +386,7 @@ export function getWidgetCode(flow: FlowType, tabsState?: TabsState): string {
const flowId = flow.id; const flowId = flow.id;
const flowName = flow.name; const flowName = flow.name;
const inputs = buildInputs(tabsState, flow.id); const inputs = buildInputs(tabsState, flow.id);
let chat_input_field = getChatInputField(flow, tabsState);
return `<script src="https://cdn.jsdelivr.net/gh/logspace-ai/langflow-embedded-chat@main/dist/build/static/js/bundle.min.js"></script> return `<script src="https://cdn.jsdelivr.net/gh/logspace-ai/langflow-embedded-chat@main/dist/build/static/js/bundle.min.js"></script>
@ -377,9 +399,7 @@ chat_input_field: Input key that you want the chat to send the user message with
${ ${
tabsState[flow.id] && tabsState[flow.id].formKeysData tabsState[flow.id] && tabsState[flow.id].formKeysData
? `chat_inputs='${inputs}' ? `chat_inputs='${inputs}'
chat_input_field="${ chat_input_field="${chat_input_field}"
Object.keys(tabsState[flow.id].formKeysData.input_keys)[0]
}"
` `
: "" : ""
}host_url="http://localhost:7860" }host_url="http://localhost:7860"