langchain
langchain copied to clipboard
APIChain loading fails
System Info
langchain==0.0.176
Who can help?
@hwchase17
Information
- [X] The official example notebooks/scripts
- [ ] My own modified scripts
Related Components
- [ ] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [ ] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [X] Chains
- [ ] Callbacks/Tracing
- [ ] Async
Reproduction
Running the following code to load a saved APIChain fails.
from langchain.chains.api.prompt import API_RESPONSE_PROMPT
from langchain.chains import APIChain
from langchain.prompts.prompt import PromptTemplate
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
from langchain.chains.api import open_meteo_docs
chain_new = APIChain.from_llm_and_api_docs(llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=True)
chain_new.save("/Users/liang.zhang/api.yaml")
chain = load_chain("/Users/liang.zhang/api.yaml")
Error:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [29], in <cell line: 1>()
----> 1 chain = load_chain("/Users/liang.zhang/api.yaml")
File ~/miniforge3/envs/mlflow-3.8/lib/python3.8/site-packages/langchain/chains/loading.py:449, in load_chain(path, **kwargs)
447 return hub_result
448 else:
--> 449 return _load_chain_from_file(path, **kwargs)
File ~/miniforge3/envs/mlflow-3.8/lib/python3.8/site-packages/langchain/chains/loading.py:476, in _load_chain_from_file(file, **kwargs)
473 config["memory"] = kwargs.pop("memory")
475 # Load the chain from the config now.
--> 476 return load_chain_from_config(config, **kwargs)
File ~/miniforge3/envs/mlflow-3.8/lib/python3.8/site-packages/langchain/chains/loading.py:439, in load_chain_from_config(config, **kwargs)
436 raise ValueError(f"Loading {config_type} chain not supported")
438 chain_loader = type_to_loader_dict[config_type]
--> 439 return chain_loader(config, **kwargs)
File ~/miniforge3/envs/mlflow-3.8/lib/python3.8/site-packages/langchain/chains/loading.py:383, in _load_api_chain(config, **kwargs)
381 requests_wrapper = kwargs.pop("requests_wrapper")
382 else:
--> 383 raise ValueError("`requests_wrapper` must be present.")
384 return APIChain(
385 api_request_chain=api_request_chain,
386 api_answer_chain=api_answer_chain,
387 requests_wrapper=requests_wrapper,
388 **config,
389 )
ValueError: `requests_wrapper` must be present.
Expected behavior
No error should occur.
@dev2049 Could you take a look at this failure (similar to #4977)? Thanks!
@liangz1 this is actually intentional - we purposefully do NOT serialize the RequestsWrapper, and instead it should be provided at run time
chain = load_chain("api.yaml", requests_wrapper = chain_new.requests_wrapper)
this is because we havent gotten around to adding proper serialization for requests objects. that is on our roadmap, but not sure high up to be honest
@hwchase17 Thanks for clarifying. Is there any documentation on this behavior? Also, it would be helpful if users can get more guidance in the error message and get an idea about how to resolve this error.