检查其他资源
- 我为这个问题添加了一个非常描述性的标题。
- 我使用集成搜索在LangChain文档中进行了搜索。
- 我使用GitHub搜索查找类似的问题,但没有找到。
- 我确信这是LangChain中的一个错误,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此错误。
示例代码
def load_reduced_api_spec():
import yaml
from some_module import reduce_openapi_spec # Adjust the import as per your actual module
with open("resources/openapi_spec.yaml") as f:
raw_api_spec = yaml.load(f, Loader=yaml.Loader)
reduced_api_spec = reduce_openapi_spec(raw_api_spec)
return reduced_api_spec
from langchain_community.utilities import RequestsWrapper
from langchain_community.agent_toolkits.openapi import planner
headers = {'x-api-key': os.getenv('API_KEY')}
requests_wrapper = RequestsWrapper(headers=headers)
api_spec = load_reduced_api_spec()
llm = ChatOpenAI(model_name="gpt-4o", temperature=0.25) #gpt-4o # gpt-4-0125-preview # gpt-3.5-turbo-0125
agent = planner.create_openapi_agent(
api_spec,
requests_wrapper,
llm,
verbose=True,
allow_dangerous_requests=True,
agent_executor_kwargs={"handle_parsing_errors": True, "max_iterations": 5, "early_stopping_method": 'generate'}
)
user_query = """find all the work by J Tromp"""
agent.invoke({"input": user_query})
错误信息和堆栈跟踪(如果适用)
> > Entering new AgentExecutor chain...
> Action: api_planner
> Action Input: find all the work by J. Tromp
Error in LangChainTracer.on_tool_end callback: TracerException("Found chain run at ID 40914c03-a52a-455c-b40e-cba510fce793, but expected {'tool'} run.")
>
> Observation: 1. **Evaluate whether the user query can be solved by the API:**
> Yes, the user query can be solved by the API. We can search for the author named "J. Tromp" and then fetch all the papers authored by her.
>
> 2. **Generate a plan of API calls:**
>
> **Step 1:** Search for the author named "J. Tromp" to get her author ID.
> - **API Call:** `GET /author/search?query=jolanda+tromp&fields=name,url`
> - **Purpose:** This call will return a list of authors named "J. Tromp" along with their names and URLs on the Semantic Scholar website. We need the author ID from this response.
>
> **Step 2:** Fetch all the papers authored by J. Tromp using her author ID.
> - **API Call:** `GET /author/{author_id}/papers`
> - **Purpose:** This call will return a list of papers authored by J. Tromp. We will use the author ID obtained from the previous step to replace `{author_id}` in the endpoint.
>
> 3. **Plan:**
>
> 1. **GET /author/search?query=jolanda+tromp&fields=name,url**
> - **Purpose:** Search for the author named "J. Tromp" and obtain her author ID.
>
> 2. **GET /author/{author_id}/papers**
> - **Purpose:** Fetch all the papers authored by J. Tromp using her author ID obtained from the previous step.
> Thought:I have the plan to find all the work by J. Tromp. Now, I will execute the plan by making the necessary API calls.
>
> Action: api_controller
> Action Input:
> 1. GET /author/search?query=jolanda+tromp&fields=name,url
> 2. GET /author/{author_id}/papers
>
> > Entering new AgentExecutor chain...
> To execute the plan, I will first perform a search for the author named "J. Tromp" to retrieve the author ID and name. Then, I will use the retrieved author ID to fetch the papers associated with this author.
>
> Action: Perform a GET request to search for the author named "J. Tromp".
> Action Input:
> ```json
> {
> "url": "https://api.semanticscholar.org/graph/v1/author/search",
> "params": {
> "query": "J. Tromp",
> "fields": "name,url"
> },
> "output_instructions": "Extract the authorId and name of the author."
> }
> ```
> Observation: Perform a GET request to search for the author named "J. Tromp". is not a valid tool, try one of [requests_get, requests_post].
> Thought:I will use the `requests_get` tool to perform the GET request to search for the author named "J. Tromp".
>
> Action: Perform a GET request to search for the author named "J. Tromp".
> Action Input:
> ```json
> {
> "url": "https://api.semanticscholar.org/graph/v1/author/search",
> "params": {
> "query": "J. Tromp",
> "fields": "name,url"
> },
> "output_instructions": "Extract the authorId and name of the author."
> }
> ```
>
> Observation: Perform a GET request to search for the author named "J. Tromp". is not a valid tool, try one of [requests_get, requests_post].
> Thought:It seems I made an error in specifying the action. I should use the `requests_get` tool correctly.
>
> Action: Use the `requests_get` tool to perform a GET request to search for the author named "J. Tromp".
> Action Input:
> ```json
> {
> "url": "https://api.semanticscholar.org/graph/v1/author/search",
> "params": {
> "query": "J. Tromp",
> "fields": "name,url"
> },
> "output_instructions": "Extract the authorId and name of the author."
> }
> ```
>
> Observation: Use the `requests_get` tool to perform a GET request to search for the author named "J. Tromp". is not a valid tool, try one of [requests_get, requests_post].
> Thought:It seems I made an error in specifying the action. I should use the `requests_get` tool correctly.
>
> Action: Use the `requests_get` tool to perform a GET request to search for the author named "J. Tromp".
> Action Input:
> ```json
> {
> "url": "https://api.semanticscholar.org/graph/v1/author/search",
> "params": {
> "query": "J. Tromp",
> "fields": "name,url"
> },
> "output_instructions": "Extract the authorId and name of the author."
> }
> ```
>
并且它会一直持续到达到最大迭代次数。
描述
我不知道如何/在哪里修改/影响api_controller提示指令以使其更加严格。行为与预期不一致。也许10次尝试中有1次会按预期工作,此时api_controller的Action会正确地指定'requests_get'。
使用gpt-4-0125-preview作为LLM可以改善一些行为,尽管它要慢得多。
系统信息
gpt-4o
3条答案
按热度按时间hc8w905p1#
看起来你的代理执行计划中的工具选择有问题。请确保在执行计划中正确指定工具名称为 "requests_get"。如果你仍然遇到问题,请检查 langchain_community.utilities 中的 RequestsWrapper 是否支持指定的工具名称,或者是否有任何特定的配置要求。
drkbr07n2#
感谢sangam0406的输入。然而,这正是问题所在:
操作应该简单地是*'requests_get'*,但它却说:'使用
requests_get
工具执行GET请求以搜索名为“J. Tromp”的作者'。这不一致,因为它失败的次数比成功的次数多。我希望能够修改配置,或者采用其他方法使其更健壮。提前感谢!
观察:使用
requests_get
工具执行GET请求以搜索名为“J. Tromp”的作者。这不是一个有效的工具,请尝试[requests_get, requests_post]中的一个。思考:似乎我在指定操作时犯了错误。我应该正确使用
requests_get
工具。操作:使用
requests_get
工具执行GET请求以搜索名为“J. Tromp”的作者。col17t5w3#
欢迎