标签: openai-api

使用 firebase 云函数作为后端时,有没有办法流式传输 OpenAI (chatGPT) 响应?

我目前正在使用 OpenAI 的 ChatGPT 和 Firebase Cloud Functions 作为后端构建一个聊天机器人。我想创建一种实时聊天体验,其中来自 ChatGPT 的响应在生成时会流回客户端。然而,我在实现这一目标方面面临一些挑战。

我已成功将 ChatGPT 与 Firebase Cloud Functions 集成,并且可以进行 API 调用来生成响应。但问题是,只有在生成整个响应时才会返回响应,从而导致用户收到任何输出之前出现延迟。

有没有办法在 ChatGPT 生成响应时实时传输响应,而不是等待完整响应?我希望用户尽快看到每个部分响应。

这是我当前代码的简化版本:

// Firebase Cloud Functions endpoint
exports.chat = functions.https.onRequest(async (req, res) => {
  const { message } = req.body;

  // Make API call to OpenAI ChatGPT
  const response = await openai.complete({
    model: 'gpt-3.5-turbo',
    stream: true,
    messages: [{ role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: message }],
  });

  // Process the response …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-functions openai-api chatgpt-api

5
推荐指数
0
解决办法
1564
查看次数

如何在 Vapor Swift 中传输数据?

我正在使用 Vapor Swift 构建一个开放 AI 聊天流后端。它使用 MacPaw 的OpenAI包装器连接到 Open AI API 。但我不确定如何使用 SSE 将结果流式传输到客户端,而不是作为单个响应。

我当前的代码如下所示:

    func postChatStreamHandler(_ req: Request) throws -> EventLoopFuture<Response> {
        let openAI = OpenAI(configuration: configuration)
        let promise = req.eventLoop.makePromise(of: Data.self)
        let query = ChatQuery(model: .gpt4, messages: messages)
        openAI.chatsStream(query: query) { partialResult in
            switch partialResult {
            case .success(let result):
                if let detla = result.choices.first?.delta,
                   let data = try? JSONEncoder().encode(result) {
                    promise.succeed(data)
                }
            case .failure(let error):
                ...
            }
        } completion: { error in
            ...
        }
        return promise.futureResult.map …
Run Code Online (Sandbox Code Playgroud)

server-sent-events swift vapor openai-api

5
推荐指数
1
解决办法
287
查看次数

使用 Pyton Flask API 传输来自 LangChain 的 OpenAI 的响应

我正在使用 Python Flask 应用程序进行数据聊天。因此,在控制台中,我可以直接从 OpenAI 获得流式响应,因为我可以使用 flag 启用流处理streaming=True

\n

问题是,我无法在 API 调用中 \xe2\x80\x9cforward\xe2\x80\x9d 流或 \xe2\x80\x9cshow\xe2\x80\x9d 流。

\n

处理 OpenAI 和链的代码是:

\n
def askQuestion(self, collection_id, question):\n        collection_name = "collection-" + str(collection_id)\n        self.llm = ChatOpenAI(model_name=self.model_name, temperature=self.temperature, openai_api_key=os.environ.get('OPENAI_API_KEY'), streaming=True, callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]))\n        self.memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True,  output_key='answer')\n        \n        chroma_Vectorstore = Chroma(collection_name=collection_name, embedding_function=self.embeddingsOpenAi, client=self.chroma_client)\n\n\n        self.chain = ConversationalRetrievalChain.from_llm(self.llm, chroma_Vectorstore.as_retriever(similarity_search_with_score=True),\n                                                            return_source_documents=True,verbose=VERBOSE, \n                                                            memory=self.memory)\n        \n\n        result = self.chain({"question": question})\n        \n        res_dict = {\n            "answer": result["answer"],\n        }\n\n        res_dict["source_documents"] = []\n\n        for source in result["source_documents"]:\n            res_dict["source_documents"].append({\n                "page_content": source.page_content,\n                "metadata": …
Run Code Online (Sandbox Code Playgroud)

python flask openai-api langchain

5
推荐指数
1
解决办法
4741
查看次数

如何使用自定义数据训练 ChatGPT

我想使用 ChatGPT 在我的网站上创建一个聊天机器人。我有一些预先定义的问题答案,如下所示:

Question: What is the price of ...?
Answer: $100

Question: How this help ..?
Anwer: 1) Improve... 2) Better... 3) More...
Run Code Online (Sandbox Code Playgroud)

当客户提出与预定义问题相关的问题时,它应该从预定义问题中获取答案并使用自然语言来回答客户。

但我不知道实现这个的逻辑。聊天完成分为三种角色(系统、用户、助手)。

我是否在系统角色中插入所有这些预定义的问题和答案,例如:

[
   'role' => 'system',
   'content' => 'I write all the information here'
],
Run Code Online (Sandbox Code Playgroud)

或者我将其全部写在单个用户提示符中,例如:

[
   'role' => 'system',
   'content' => 'You're are a helpful assistant'
],
[
   'role' => 'user',
   'content' => 'I write all the information here'
]
Run Code Online (Sandbox Code Playgroud)

或者我将其分成不同的用户提示,例如:

[
   'role' => 'system',
   'content' => 'You're are a helpful assistant'
],
[ …
Run Code Online (Sandbox Code Playgroud)

openai-api

5
推荐指数
1
解决办法
2289
查看次数

openai 嵌入相同的文本但返回不同的向量

我现在正在尝试 OpenAI Embedding API。但我发现了一个问题。当我一次又一次嵌入相同的文本时,我得到了不同的向量数组。

文本内容为baby is crying,模型为text-embedding-ada-002(MODEL GENERATION: V2)。我循环运行代码for5 次,得到了不同的向量值。例如,第一个向量值为

"-0.017496677", "-0.017429505", "-0.017429505", "-0.017429505" and "-0.017496677"
Run Code Online (Sandbox Code Playgroud)

我认为对于相同的文本内容,嵌入后应该返回相同的向量。这样对吗?

embedding openai-api

5
推荐指数
1
解决办法
2671
查看次数

如何更改LangChain默认返回的4个文档?

我有以下代码实现 LangChain + ChatGPT 以回答给定数据的问题:

import { PineconeStore } from 'langchain/vectorstores/pinecone';
import { ConversationalRetrievalQAChain } from 'langchain/chains';

const CONDENSE_PROMPT = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.

Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:`;

const QA_PROMPT = `You are a helpful AI assistant. Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say you don't …
Run Code Online (Sandbox Code Playgroud)

openai-api gpt-4 langchain

5
推荐指数
1
解决办法
1304
查看次数

使用GPT-4 API时,我需要每次都发回整个对话吗?

我是 OpenAI API 的新手。我使用 GPT-3.5-Turbo,使用以下代码:

\n
messages = [\n        {"role": "system", "content": "You\xe2\x80\x99re a helpful assistant"}\n    ]\n\n    while True:\n        content = input("User: ")\n        if content == 'end':\n            save_log(messages)\n            break\n        messages.append({"role": "user", "content": content})\n\n        completion = openai.ChatCompletion.create(\n            model="gpt-3.5-turbo-16k",\n            messages=messages\n        )\n\n        chat_response = completion.choices[0].message.content\n        print(f'ChatGPT: {chat_response}')\n        messages.append({"role": "assistant", "content": chat_response})\n
Run Code Online (Sandbox Code Playgroud)\n

结果:\n用户:谁是第一个登上月球的人?\nGPT:第一个踏上月球的人是美国宇航员尼尔·阿姆斯特朗,于 1969 年 7 月 20 日执行 NASA 阿波罗 11 号任务。\ n用户:他有多高?\nGPT:尼尔阿姆斯特朗身高约为 5 英尺 11 英寸(180 厘米)。

\n

但它需要大量的代币。我听说 GPT-4 与 GPT-3 的不同之处在于它能够(自行)记住之前的消息。那是对的吗?

\n

但是,如果我删除在“消息”列表中附加最新消息的行并仅发送一条消息:\n completion = openai.ChatCompletion.create( model="gpt-4", messages=[{"role": …

openai-api gpt-3 chatgpt-api gpt-4

5
推荐指数
1
解决办法
2166
查看次数

类型错误:OpenAIApi 不是构造函数

我收到错误:

const openai = new OpenAIApi({ key: apiKey });
               ^

TypeError: OpenAIApi is not a constructor
Run Code Online (Sandbox Code Playgroud)

当我尝试使用nodejs(v16.7.0)创建openai api时。我已按照文档中的代码安装了 openai api (v4.3.1)

我使用的代码:

const { OpenAIApi } = require('openai');

const openai = new OpenAIApi({ key: apiKey });
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

javascript artificial-intelligence node.js openai-api

5
推荐指数
1
解决办法
4969
查看次数

OpenAI API:如何使用 gpt-4-vision-preview 模型启用 JSON 模式?

更新:他们似乎在 API 文档中犯了一个错误,现在已修复。

早些时候,它说“当调用gpt-4-vision-preview或 时gpt-3.5-turbo”,但现在改为“当调用gpt-4-1106-preview或 时gpt-3.5-turbo-1106”。


根据Text Generation - OpenAI API,“当调用gpt-4-vision-preview或时gpt-3.5-turbo,您可以将 response_format 设置{ type: "json_object" }为启用 JSON 模式。”

但是,以下代码会引发错误:

 {'error': {'message': '1 validation error for Request\nbody -> response_format\n  extra fields not permitted (type=value_error.extra)', 'type': 'invalid_request_error', 'param': None, 'code': None}}
Run Code Online (Sandbox Code Playgroud)

如果我发表评论"response_format": {"type": "json_object"},效果很好。

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    
    payload = {
        "model": "gpt-4-vision-preview",
        "response_format": {"type": "json_object"},
        "messages": [
          { …
Run Code Online (Sandbox Code Playgroud)

python openai-api gpt-4

5
推荐指数
2
解决办法
9103
查看次数

使用 API 上传 pdf 到 chat gpt?

ChatGPT 的网络界面可以轻松上传 pdf 文件。openAI 有没有可以接收 pdf 的 API?

我知道有 3rd 方库可以读取 pdf,但考虑到 pdf 中有图像和其他重要信息,如果像 GPT 4 Turbo 这样的模型提供实际的 pdf 可能会更好。

我将陈述我的用例以添加更多上下文。我打算做RAG。这是我的pdf,这是提示。通常我会在提示末尾附加文本。如果我自己提取pdf文件,我仍然可以做到这一点。

这就是我应该做的吗?代码来自此处https://platform.openai.com/docs/assistants/tools/code-interpreter

# Upload a file with an "assistants" purpose
file = client.files.create(
  file=open("example.pdf", "rb"),
  purpose='assistants'
)

# Create an assistant using the file ID
assistant = client.beta.assistants.create(
  instructions="You are a personal math tutor. When asked a math question, write and run code to answer the question.",
  model="gpt-4-1106-preview",
  tools=[{"type": "code_interpreter"}],
  file_ids=[file.id]
)
Run Code Online (Sandbox Code Playgroud)

还有一个上传端点,但这些端点的目的似乎是用于微调和助手。我认为 RAG 用例是一个正常的用例,与助手没有必然关系。

pdf openai-api chat-gpt-4

5
推荐指数
1
解决办法
8037
查看次数