标签: openai-api

微调后 OpenAI 预测的编码问题

我正在关注这个有关微调的OpenAI 教程。

\n

我已经使用 openai 工具生成了数据集。问题在于输出编码(推理结果)将 UTF-8 与非 UTF-8 字符混合。

\n

生成的模型如下所示:

\n
{"prompt":"Usuario: Qui\xc3\xa9n eres\\\\nAsistente:","completion":" Soy un Asistente\\n"}\n{"prompt":"Usuario: Qu\xc3\xa9 puedes hacer\\\\nAsistente:","completion":" Ayudarte con cualquier gesti\xc3\xb3n o ofrecerte informaci\xc3\xb3n sobre tu cuenta\\n"}\n
Run Code Online (Sandbox Code Playgroud)\n

例如,如果我问“\xc2\xbfC\xc3\xb3mo est\xc3\xa1s?” 并且该句子有一个训练有素的补全:“Estoy bien,\xc2\xbfy t\xc3\xba?”,推理通常返回完全相同的结果(这很好),但有时它会添加非编码单词:“ Estoy bien, \xc2\xbfy t\xc3\xba? Cu\xc3\x83\xc2\xa9ntame algo de ti",添加“\xc3\x83\xc2\xa9”而不是“\xc3\xa9”。

\n

有时,它返回与训练的句子完全相同的句子,没有编码问题。\n我不知道推理是否从我的模型或其他地方获取非编码字符。

\n

我应该做什么?\n我应该使用 UTF-8 对数据集进行编码吗?\n我应该使用 UTF-8 保留数据集并解码响应中的错误编码字符吗?

\n

用于微调的 OpenAI 文档不包含任何有关编码的内容。

\n

utf-8 character-encoding openai-api gpt-3

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

在 Windows 中使用 OpenAI API 密钥时出现问题

我必须在自定义数据集上微调 OpenAI 模型。我已经创建了 jsonl 格式的数据集。我在 Windows 命令行上使用以下命令:

\n

set OPENAI_API_KEY=<API key>

\n

openai tools fine_tunes.prepare_data -f "train_data.jsonl"

\n

上面的命令成功运行并给了我一些更新 jsonl 文件的建议。之后,我运行以下命令来微调“curie”模型。

\n

openai api fine_tunes.create 'openai.api_key = <API key>' -t "train_data.jsonl" -m "curie"

\n

但我遇到以下问题:

\n

\xe2\x86\x90[91mError:\xe2\x86\x90[0m Incorrect API key provided: "sk-iQJX*****************************************mux". You can find your API key at https://beta.openai.com. (HTTP status code: 401)

\n

谁能帮我解决这个问题。

\n

windows command-line openai-api

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

未找到 openai 命令(mac)

我正在尝试遵循此处的Openai 微调指南。

我跑:

pip install --upgrade openai
Run Code Online (Sandbox Code Playgroud)

哪个安装没有任何错误。

但即使重新启动终端后,我仍然得到

zsh: command not found: openai
Run Code Online (Sandbox Code Playgroud)

这是 echo $PATH 的输出:

/bin:/usr/bin:/usr/local/bin:/Users/nickrose/Downloads/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

这是 python 的输出:

/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何提示?我使用的是 MacOS Big Sur 11.6。

python machine-learning openai-api

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

LlamaIndex 与 ChatGPT 检索答案的时间过长

我目前正在为我们的网站开发一个聊天机器人,该机器人使用 LlamaIndex 和 chatGPT 提供领域知识。我们的聊天机器人使用大约 50 个文档,每个文档长约 1-2 页,包含来自我们网站的教程和其他信息。虽然我得到的答案很好,但性能很慢。平均而言,检索答案大约需要 15-20 秒,这对于我们的网站来说不切实际。

我已经按照文档中的建议尝试使用优化器,但没有看到太大的改进。目前,我正在使用 GPTSimpleVectorIndex,尚未测试其他索引。我尝试在不同的机器上运行机器人,但没有看到性能的显着改进,所以我不认为这是硬件限制。

我正在寻找有关如何提高机器人性能的建议,以便它可以更快地提供答案。

谢谢你!

代码:

import os
import sys
import streamlit as st
from llama_index import (LLMPredictor, GPTSimpleVectorIndex, 
                         SimpleDirectoryReader, PromptHelper, ServiceContext)
from langchain import OpenAI

os.environ["OPENAI_API_KEY"] = ...
retrain = sys.argv[1]
doc_path = 'docs'
index_file = 'index.json'
st.title("Chatbot")

def ask_ai():
    st.session_state.response  = index.query(st.session_state.prompt)

if retrain:
    documents = SimpleDirectoryReader(doc_path).load_data()
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003", max_tokens = 128))
    num_output = 256
    max_chunk_overlap = 20
    max_input_size = 4096
    prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap) …
Run Code Online (Sandbox Code Playgroud)

python openai-api chatgpt-api llama-index

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

将 SystemMessage/Context 赋予 Lang Chain 中的 ConversationalRetrievalChain 和 ConversationBufferMemory

我正在尝试构建一个可以讨论 pdf 的聊天机器人,并且我让它与内存一起使用ConversationBufferMemoryConversationalRetrievalChain就像本例中一样。https://python.langchain.com/en/latest/modules/chains/index_examples/chat_vector_db.html

现在我试图给人工智能一些特殊的指令,让它像海盗一样说话(只是为了测试它是否收到指令)。我认为这应该是一个SystemMessage,或者带有提示模板的东西?

我已经尝试了我发现的所有内容,但文档中的所有示例都是针对的ConversationChain,但我最终遇到了问题。到目前为止,唯一没有出现任何错误的是:

template = """Given the following conversation respond to the best of your ability in a pirate voice and end every sentence with Ay Ay Matey
Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:"""
PROMPT = PromptTemplate(
    input_variables=["chat_history", "question"], template=template
)
memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True, output_key='answer')
qa = ConversationalRetrievalChain.from_llm(OpenAI(temperature=0), vectorstore.as_retriever(), PROMPT, memory=memory, return_source_documents=True)
Run Code Online (Sandbox Code Playgroud)

它仍然对结果没有任何影响,所以我不知道它是否有任何作用。我还认为这是错误的方法,我应该使用SystemMessages (也许在内存上,而不是在 qa 上),但我从文档中尝试的任何操作都不起作用,我不知道该怎么做。

python openai-api py-langchain

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

系统角色的用例是什么

这是来自 ChatGPT 聊天补全的官方文档:

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)
Run Code Online (Sandbox Code Playgroud)

我对系统角色的第一个理解是一条只是向用户打招呼的消息。但用“你是一个有用的助手”来问候用户是没有意义的。它还解释了:

系统消息有助于设置助手的行为。在上面的示例中,助理收到的指示是“你是一位乐于助人的助理”。

那么,我是否在系统角色中编写人工智能的行为,例如:You're professional assistant如果我希望人工智能成为专业人士,或者我可以在角色中编写:You're a funny assistant如果我希望它成为一个有趣的人工智能。

或者只是一条问候语?

openai-api chatgpt-api

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

如何将 OpenAI 流响应从 Nextjs API 发送到客户端

我尝试了openai-streams + nextjs-openai,它们仅适用于 Node 18+,但是,它们在 Node 17 及更低版本上失败。我仅限于 Node 17 及更低版本,因为 Digital Oceans 应用平台目前不支持 Node 18。

我也尝试过这种方法,它在客户端运行良好,但它暴露了 API 密钥。我想在 NextJS API 路由中实现,但无法将流响应传递给客户端。

使用下面的代码,我只能从 API 路由获取第一块响应,而无法获取具有 ChatGPT 效果的流响应。请帮忙。

// /api/prompt.js

import { Configuration, OpenAIApi } from "openai";
import { Readable } from "readable-stream";

const configuration = new Configuration({
  apiKey: process.env.NEXT_PUBLIC_OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

export default async function handler(req, res) {
  const completion = await openai.createCompletion(
    {
      model: "text-davinci-003",
      prompt: "tell me a story",
      max_tokens: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js next.js openai-api

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

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