You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langchain/tests/unit_tests
Jason Liu 54f9e4287f
Pass kwargs from initialize_agent into agent classmethod (#799)
# Problem
I noticed that in order to change the prefix of the prompt in the
`zero-shot-react-description` agent
we had to dig around to subset strings deep into the agent's attributes.
It requires the user to inspect a long chain of attributes and classes.

`initialize_agent -> AgentExecutor -> Agent -> LLMChain -> Prompt from
Agent.create_prompt`

``` python
agent = initialize_agent(
    tools=tools,
    llm=fake_llm,
    agent="zero-shot-react-description"
)
prompt_str = agent.agent.llm_chain.prompt.template
new_prompt_str = change_prefix(prompt_str)
agent.agent.llm_chain.prompt.template = new_prompt_str
```

# Implemented Solution

`initialize_agent` accepts `**kwargs` but passes it to `AgentExecutor`
but not `ZeroShotAgent`, by simply giving the kwargs to the agent class
methods we can support changing the prefix and suffix for one agent
while allowing future agents to take advantage of `initialize_agent`.


```
agent = initialize_agent(
    tools=tools,
    llm=fake_llm,
    agent="zero-shot-react-description",
    agent_kwargs={"prefix": prefix, "suffix": suffix}
)
```

To be fair, this was before finding docs around custom agents here:
https://langchain.readthedocs.io/en/latest/modules/agents/examples/custom_agent.html?highlight=custom%20#custom-llmchain
but i find that my use case just needed to change the prefix a little.


# Changes

* Pass kwargs to Agent class method
* Added a test to check suffix and prefix

---------

Co-authored-by: Jason Liu <jason@jxnl.coA>
1 year ago
..
agents Pass kwargs from initialize_agent into agent classmethod (#799) 1 year ago
callbacks Suggestions for better debugging (#765) 1 year ago
chains move hyde into chains (#728) 1 year ago
data Prompt from file proof of concept using plain text (#127) 2 years ago
docstore wip: add method for both docstore and embeddings (#119) 2 years ago
llms Fix sqlalchemy warnings when running tests (#733) 1 year ago
prompts Docs refactor (#480) 1 year ago
utilities Centralize logic for loading from LangChainHub, add ability to pin dependencies (#805) 1 year ago
__init__.py initial commit 2 years ago
test_bash.py update branch name in gha (#274) 2 years ago
test_formatting.py initial commit 2 years ago
test_python.py Harrison/tools exp (#372) 1 year ago
test_sql_database.py Sample row in table info for SQLDatabase (#769) (#782) 1 year ago
test_sql_database_schema.py Fix sqlalchemy warnings when running tests (#733) 1 year ago
test_text_splitter.py Harrison/fix splitting (#563) 1 year ago