标签: langchain

如何使用 LangChain Callbacks 将模型调用和答案记录到变量中

我正在使用LangChain构建 NL 应用程序。我希望将与 LLM 的交互记录在一个变量中,我可以将其用于日志记录和调试目的。我创建了一个非常简单的链:

from typing import Any, Dict

from langchain import PromptTemplate
from langchain.callbacks.base import BaseCallbackHandler
from langchain.chains import LLMChain
from langchain.llms import OpenAI

llm = OpenAI()
prompt = PromptTemplate.from_template("1 + {number} = ")
handler = MyCustomHandler()

chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
chain.run(number=2)
Run Code Online (Sandbox Code Playgroud)

为了记录发生的情况,我创建了一个自定义CallbackHandler

class MyCustomHandler(BaseCallbackHandler):
    def on_text(self, text: str, **kwargs: Any) -> Any:
        print(f"Text: {text}")
        self.log = text
  
    def on_chain_start(
        self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any
    ) -> Any:
        """Run …
Run Code Online (Sandbox Code Playgroud)

python nlp openai-api langchain

8
推荐指数
1
解决办法
4376
查看次数

langchain 的色度 `vectordb.similarity_search_with_score()` 和 `vectordb.similarity_search_with_relevancy_scores()` 返回相同的输出

我一直在使用 langchain 的色度矢量数据库。它有两种使用分数运行相似性搜索的方法。

  1. vectordb.similarity_search_with_score()
  2. vectordb.similarity_search_with_relevance_scores()

根据文档,第一个应该返回 的余弦距离float在此输入图像描述

越小越好。

第二个应该返回从 0 到 1 的分数,0 表示不相似,1 表示相似。 在此输入图像描述

但是当我尝试相同的方法时,它给出了完全相同的结果和相同的分数,这超出了上限 1,第二个函数不应该出现这种情况。

这里发生了什么?

nlp langchain

8
推荐指数
2
解决办法
2万
查看次数

Langchain的AzureOpenAI错误:找不到资源

我\xe2\x80\x99m 尝试使用 LangChain\xe2\x80\x99s AzureOpenAI,如下所示,但收到此错误。\n你知道如何解决此问题吗?

\n

openai.error.InvalidRequestError: Resource not found

\n
# Import Azure OpenAI\nfrom langchain.llms import AzureOpenAI\nimport openai\nimport os\n\nos.environ["OPENAI_API_TYPE"] = "azure"\nos.environ["OPENAI_API_KEY"] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"\nos.environ["OPENAI_API_BASE"] = "https://XXXXXX-openai.openai.azure.com/"\nos.environ["OPENAI_API_VERSION"] = "2022-12-01"\n\nllm = AzureOpenAI(\n    openai_api_type="azure",\n    deployment_name="text-davinci-003", \n    model_name="text-davinci-003") \n\nprint(llm("hi"))\n
Run Code Online (Sandbox Code Playgroud)\n

将 Azure OpenAI 与 LangChain 框架结合使用

\n

azure openai-api langchain

7
推荐指数
2
解决办法
2万
查看次数

如何在Langchain中加载Json文件的文件夹?

我正在尝试在 Langchain 中加载 JSON 文件的文件夹,如下所示:

loader = DirectoryLoader(r'C:...')
documents = loader.load()
Run Code Online (Sandbox Code Playgroud)

但我收到这样的错误消息:

ValueError:Json 架构与非结构化架构不匹配

谁能告诉我如何解决这个问题?

我尝试使用glob='**/*.json',但它不起作用。Langchain 网站上的文档也很有限。

langchain py-langchain document-loader

7
推荐指数
1
解决办法
1万
查看次数

langchain CharacterTextSplitter 的 chunk_size 参数有什么作用?

我的默认假设是该chunk_size参数将为该方法产生的块/分割的大小设置上限split_text,但这显然是不对的:

from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter

chunk_size = 6
chunk_overlap = 2

c_splitter = CharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)

text = 'abcdefghijklmnopqrstuvwxyz'

c_splitter.split_text(text)
Run Code Online (Sandbox Code Playgroud)

打印:['abcdefghijklmnopqrstuvwxyz'],即比 更大的单个块chunk_size=6

所以我知道它没有将文本分割成块,因为它从未遇到分隔符。但问题是,even 在做什么chunk_size

langchain.text_splitter.CharacterTextSplitter 我检查了此处的文档页面,但没有看到这个问题的答案。我询问了“可修复的”chat-with-langchain-docs 搜索功能,但得到了答案“CharacterTextSplitter 的 chunk_size 参数决定了每个文本块中的最大字符数。”...这是不正确的,因为上面的代码示例显示了。

python text nlp machine-learning langchain

7
推荐指数
2
解决办法
1万
查看次数

如何在 ReAct LangChain 框架中添加要与 agent.run 一起传递的上下文

我之前在 LangChain 中构建了一个 pdf 搜索工具,它使用 chain.run(input_documents=, question=)语法来询问模型问题以及该 pdf 中的上下文。我想将其与langchain提供的代理集成。我正在使用语法agent.run('Question')

我无法找到集成这两种方法的链接。

openai-api langchain large-language-model

7
推荐指数
0
解决办法
577
查看次数

如何使用 Langchain 获得更详细的结果来源

我正在尝试使用 Langchain 和特定 URL 作为源数据来整理一个简单的“来源问答”。URL 由一个页面组成,其中包含大量信息。

问题是RetrievalQAWithSourcesChain只给我返回整个 URL 作为结果的来源,这在这种情况下不是很有用。

有没有办法获得更详细的源信息?也许页面上特定部分的标题?指向页面正确部分的可点击 URL 会更有帮助!

我有点不确定 的生成是result source语言模型、URL 加载器的函数还是仅仅是RetrievalQAWithSourcesChain单独的。

我尝试过使用UnstructuredURLLoader和 ,SeleniumURLLoader希望更详细的数据读取和输入会有所帮助 - 遗憾的是没有。

相关代码摘录:

llm = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')
chain = RetrievalQAWithSourcesChain.from_llm(llm=llm, retriever=VectorStore.as_retriever())

result = chain({"question": question})

print(result['answer'])
print("\n Sources : ",result['sources'] )
Run Code Online (Sandbox Code Playgroud)

python openai-api gpt-3 chatgpt-api langchain

6
推荐指数
1
解决办法
6571
查看次数

如何向pandas工具包代理添加会话记忆?

我想添加一个ConversationBufferMemorypandas_dataframe_agent但到目前为止我还没有成功。

  • 我尝试通过 construcor: 添加内存,create_pandas_dataframe_agent(llm, df, verbose=True, memory=memory)这不会破坏代码,但不会导致代理记住我之前的问题。
  • 我还尝试通过这段代码将内存添加到代理中:pd_agent.agent.llm_chain.memory = memory。这导致了ValueError: One input key expected got ['input', 'agent_scratchpad']

这是我到目前为止的代码(不起作用):

llm = ChatOpenAI(temperature=0, model_name="gpt-4-0613")

memory = ConversationBufferMemory()

pd_agent = create_pandas_dataframe_agent(llm, df, verbose=True, memory=memory)
#pd_agent.agent.llm_chain.memory = memory #Or if I use this approach the code breaks when calling the .run() methods

pd_agent.run("Look into the data in step 12. Are there any weird patterns? What can we say about this part of the dataset.")
pd_agent.run("What …
Run Code Online (Sandbox Code Playgroud)

python openai-api langchain

6
推荐指数
1
解决办法
3070
查看次数

如何在 Next JS 应用程序中使用 langchain ConversationalRetrievalQA 链存储聊天记录?

我正在创建一个文本文档 QA 聊天机器人,我使用LangchainjsOpenAI LLM 来创建嵌入,并使用 Chat 和Pinecone作为我的矢量存储。

见图: 在此输入图像描述

成功上传嵌入并在松果上创建索引后。我正在使用 Next JS 应用程序与 OpenAI 和 Pinecone 进行通信。

我的应用程序的当前结构如下所示:

1:前端 -> 用户输入 aquestion并对 NEXT js 服务器 API 路由进行 POST 调用/ask

2:服务器功能如下所示:

const vectorStore = await PineconeStore.fromExistingIndex(
        new OpenAIEmbeddings(),
        { pineconeIndex })

const model = new ChatOpenAI({ temperature: 0.5, modelName: 'gpt-3.5-turbo' })

const memory = new ConversationSummaryMemory({
    memoryKey: 'chat_history',
    llm: new ChatOpenAI({ modelName: 'gpt-3.5-turbo', temperature: 0 }),
})

const chain = ConversationalRetrievalQAChain.fromLLM(
    model,
    vectorStore.asRetriever(),
    { …
Run Code Online (Sandbox Code Playgroud)

chatbot next.js openai-api langchain pinecone

6
推荐指数
1
解决办法
2451
查看次数

如何使用 langchain 查询 mongo 集合

我想使用 lanchain 查询我的 mongo 集合。

就像我们在 langchain 中有 SQLDatabaseChain 来连接 sql 数据库(如 postgres)一样,我们是否有类似的东西来连接 nosql 数据库(如 mongo)?

我查看了文档,没有找到 nosql 的任何替代方案。

openai-api langchain

6
推荐指数
0
解决办法
1066
查看次数