langchain [社区]在最新版本中搜索丢失的工具输出回调

ltskdhd1  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(74)

检查其他资源

  • 我为这个问题添加了一个非常描述性的标题。
  • 我在集成搜索中搜索了LangChain文档。
  • 我使用GitHub搜索找到了一个类似的问题,但没有找到。
  • 我确信这是LangChain中的一个bug,而不是我的代码。
  • 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决这个bug。

示例代码

我们最近的库升级如下:

-langchain = "0.2.0rc2"
+langchain = "^0.2.5"

-langchain-community = "0.2.0rc1"
+langchain-community = "^0.2.5"

-langchain-anthropic = "^0.1.9"
+langchain-anthropic = "^0.1.15"

-langchain-groq = "0.1.3"
+langchain-groq = "^0.1.5"

-langchain-core = "^0.1.52"
+langchain-core = "^0.2.9"

-langgraph = "^0.0.38"
+langgraph = "^0.0.69"

并且失去了在回调处理程序中查看Tavily Search工具调用输出的能力。
当我们回滚软件包时,工具输出又会出现。在我们更新后,我们的自定义回调处理程序能够与其他堆栈中的每个工具一起输出工具调用输出。
我们像这样实现tavily工具:

from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_community.utilities.tavily_search import TavilySearchAPIWrapper


def get_tavily_search_tool(callbacks=[]):
    search = TavilySearchResults(
        name="search",
        api_wrapper=TavilySearchAPIWrapper(tavily_api_key="tvly-"), 
            callbacks=callbacks, 
            max_results=5
            )
    return search

我们的回调处理程序看起来像这样:

async def on_tool_start(
        self,
        serialized: Dict[str, Any],
        input_str: str,
        **kwargs: Any,
    ) -> None:
        tool_spec = flatten_dict(serialized)

        tool_name = tool_spec.get("name", "Unknown Tool")
        tool_description = tool_spec.get("description", "No description available")
        self.queue.put_nowait(f"\n\nUsing `{tool_name}` (*{tool_description}*)\n")

    async def on_tool_end(
        self,
        output: str,
        color: Optional[str] = None,
        observation_prefix: Optional[str] = None,
        llm_prefix: Optional[str] = None,
        **kwargs: Any,
    ) -> None:
        """If not the final action, print out observation."""
        if observation_prefix is not None:
            self.queue.put_nowait(f"\n{observation_prefix}\n")

        if len(output) > 10000:
            # truncate output to 10.000 characters
            output = output[:10000]
            output += " ... (truncated to 10,000 characters)"
            self.queue.put_nowait(f"\n```json\n{output}\n```\n\n")
        else:
            if isinstance(output, dict):
                pretty_output = json.dumps(output, indent=4)
                self.queue.put_nowait(f"\n```json\n{pretty_output}\n```\n\n")

            elif isinstance(output, str):
                # attempt to parse the output as json
                try:
                    pretty_output = json.dumps(ast.literal_eval(output), indent=4)
                    self.queue.put_nowait(f"\n```json\n{pretty_output}\n```\n\n")
                except:
                    pretty_output = output
                    self.queue.put_nowait(f"\n```\n{pretty_output}\n```\n\n")

        if llm_prefix is not None:
            self.queue.put_nowait(f"\n{llm_prefix}\n")

错误信息和堆栈跟踪(如果适用)

  • 无响应*

描述

我们最近升级了我们的库,并失去了在回调处理程序中查看Tavily Search工具调用输出的能力。
当我们回滚软件包时,工具输出又会出现。在我们更新后,我们的自定义回调处理程序能够与其他堆栈中的每个工具一起输出工具调用输出。

系统信息

langchain==0.1.16
langchain-anthropic==0.1.13
langchain-community==0.0.34
langchain-core==0.1.52
langchain-google-genai==1.0.3
langchain-mistralai==0.1.8
langchain-openai==0.1.6
langchain-text-splitters==0.0.1

68de4m5k

68de4m5k1#

@zdql ,您之前发布的原始问题中包含了您的API密钥。我修改了问题以删除它,但您应该认为密钥已被泄露并对其进行轮换。
关于这个问题,您能确认搜索工具本身是否正常工作,以及问题是否特定于回调?

vsmadaxz

vsmadaxz2#

对于这个问题,您能确认搜索工具本身是正常工作的吗?问题是否特定于回调?
已确认。搜索工具本身似乎运行正常,只是没有之前的回调功能。

相关问题