标签: openai-api

如何使用 OpenAI API 上传文件

为了制作微调的 ChatGPT 模型,我们需要上传训练数据的 JSON 文件。用于文件上传的 OpenAI 文档在这里:

https://platform.openai.com/docs/api-reference/files/upload

但是...我不知道如何附加实际的文件信息。参数file是文件名,而不是文件。一定有一些明显的东西我失踪了!

openai-api chatgpt-api

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

如何在 Python 中使用 ChatGPT 和 langchain 将上下文/聊天历史合并到 OpenAI ChatBot 中?

请耐心等待,因为这确实是我编写的第一个主要代码,并且是针对 OpenAI 的 ChatGPT API 的。

我打算用这段代码做的是加载一个pdf文档或一组pdf文档。然后把它们分开,以免用完我的代币。然后,用户会提出与所述文档相关的问题,机器人会做出回应。我遇到的问题是,我希望机器人在我提出新问题时能够理解上下文。例如: Q1:什么是瓢虫?A1:瓢虫是甲虫的一种等等等等...... Q2:它们是什么颜色的?A2:它们可以有各种颜色等等等等... Q3:在哪里可以找到它们?A3:瓢虫遍布世界各地......

但我似乎无法启动并运行我的代码。相反,这是我得到的输出: 当我提出需要机器人了解上下文的后续问题时我得到什么

**这是代码:**

import os
import platform

import openai
import gradio as gr
import chromadb
import langchain

from langchain.chat_models import ChatOpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import TokenTextSplitter

from langchain.document_loaders import PyPDFLoader
from langchain.prompts.prompt import PromptTemplate
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory

#OpenAI API Key goes here
os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxx'

#load the data here. 
def get_document():
    loader = PyPDFLoader('docs/ladybug.pdf')
    data = loader.load()
    return …
Run Code Online (Sandbox Code Playgroud)

python openai-api chatgpt-api langchain py-langchain

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

如何查看 Lang Chain 中保存的 Chroma(或任何其他数据库)文档的嵌入?

Chroma当我使用withLangchainOpenAIembeddings时,我可以看到除文档的嵌入之外的所有内容。它总是None向我展示这一点

这是代码:

for db_collection_name in tqdm(["class1-sub2-chap3", "class2-sub3-chap4"]):
    documents = []
    doc_ids = []

    for doc_index in range(3):
        cl, sub, chap = db_collection_name.split("-")
        content = f"This is {db_collection_name}-doc{doc_index}"
        doc = Document(page_content=content, metadata={"chunk_num": doc_index, "chapter":chap, "class":cl, "subject":sub})
        documents.append(doc)
        doc_ids.append(str(doc_index))


    # # Initialize a Chroma instance with the original document
    db = Chroma.from_documents(
         collection_name=db_collection_name,
         documents=documents, ids=doc_ids,
         embedding=embeddings, 
         persist_directory="./data")
    
     db.persist()
Run Code Online (Sandbox Code Playgroud)

当我这样做时db.get(),我看到的一切都如预期的embedding那样None

{'ids': ['0', '1', '2'],
 'embeddings': None,
 'documents': ['This is class1-sub2-chap3-doc0', …
Run Code Online (Sandbox Code Playgroud)

python nlp openai-api langchain chromadb

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

在LangChain中,如何将详细输出保存到变量中?

我尝试执行 langchain 代理。我想将 verbose 的输出保存到变量中,但我可以从 agent.run 访问的只是最终答案。

如何将详细输出保存到变量以便以后使用?

我的代码:

import json
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
from langchain.agents import Tool
from langchain.utilities import PythonREPL

llm = OpenAI(temperature=0.1)

## Define Tools
python_repl = PythonREPL()

tools = load_tools(["python_repl", "llm-math"], llm=llm)

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

response = agent.run("What is 3^2. Use calculator to solve.")
Run Code Online (Sandbox Code Playgroud)

我尝试访问代理的响应,但这只是最终答案,而不是详细输出。

打印响应仅给出 9。但我想要详细的过程,例如:

> Entering new AgentExecutor chain...
 I need to use the calculator to solve …
Run Code Online (Sandbox Code Playgroud)

agent openai-api langchain large-language-model

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

为 langchain 中的嵌套 json 定义输出模式

为嵌套 json 定义输出模式的推荐方法是什么,我使用的方法感觉不太理想。

# adding to planner -> from langchain.experimental.plan_and_execute import load_chat_planner

refinement_response_schemas = [
        ResponseSchema(name="plan", description="""{'1': {'step': '','tools': [],'data_sources': [],'sub_steps_needed': bool},
 '2': {'step': '','tools': [<empty list>],'data_sources': [<>], 'sub_steps_needed': bool},}"""),] #define json schema in description, works but doesn't feel proper
    
refinement_output_parser = StructuredOutputParser.from_response_schemas(refinement_response_schemas)
refinement_format_instructions = refinement_output_parser.get_format_instructions()

refinement_output_parser.parse(output)
Run Code Online (Sandbox Code Playgroud)

给出:

{'plan': {'1': {'step': 'Identify the top 5 strikers in La Liga',
   'tools': [],
   'data_sources': ['sports websites', 'official league statistics'],
   'sub_steps_needed': False},
  '2': {'step': 'Identify the top 5 strikers in the Premier League', …
Run Code Online (Sandbox Code Playgroud)

python openai-api langchain py-langchain

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

如何使用 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
查看次数

Azure OpenAI 延迟峰值(3-20 分钟!)

我们正在使用标准层的 Azure OpenAI gpt-3.5-turbo 模型对聊天机器人应用程序进行原型设计。

我们面临着随机的延迟突发,有时会持续 3 到 20 分钟。下面是门户网站提供的指标的屏幕截图。正如您所看到的,使用/速率限制并不表示高负载。

事实上,该应用程序尚未部署到生产环境中,它仅被我们的开发团队用于测试目的。了解这些延迟峰值将帮助我们证明我们的 PoC 并在生产中使用 Azure OpenAI 服务。

关于如何解决这个问题有什么想法吗?

模型属性 模型名称:gpt-35-turbo 模型版本:0301 部署类型:标准 内容过滤器:每分钟默认令牌数 速率限制(千):120 速率限制(每分钟令牌数):120000 速率限制(每分钟请求数):720

图表

潜伏: 在此输入图像描述

速率限制: 在此输入图像描述

已处理的提示标记: 在此输入图像描述

azure azure-cognitive-services openai-api gpt-3

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