OpenAI 文档model中有关微调 API 属性的说明有点令人困惑:
模型
要微调的基本模型的名称。您可以选择“ada”、“babbage”、“curie”、“davinci”之一或 2022 年 4 月 21 日之后创建的微调模型。
我的问题:微调基本模型还是微调模型更好?
ada我从with file创建了一个微调模型mydata1K.jsonl:
ada + mydata1K.jsonl --> ada:ft-acme-inc-2022-06-25
Run Code Online (Sandbox Code Playgroud)
现在我有一个更大的样本文件mydata2K.jsonl,我想用它来改进微调模型。在这第二轮微调中,是ada再次微调好还是对我微调后的模型进行微调好ada:ft-acme-inc-2022-06-25?我假设这是可能的,因为我的微调模型是在 2022 年 4 月 21 日之后创建的。
ada + mydata2K.jsonl --> better-model
Run Code Online (Sandbox Code Playgroud)
或者
ada:ft-acme-inc-2022-06-25 + mydata2K.jsonl --> even-better-model?
Run Code Online (Sandbox Code Playgroud) 我使用带有“提示”和“完成”的自定义文本来训练新模型。
这是我用来根据数据创建自定义模型的教程:
beta.openai.com/docs/guides/fine-tuning/advanced-usage
然而,即使在训练模型并向模型发送提示文本之后,我仍然得到并不总是适合我的通用结果。
如何确保提示的完成结果仅来自我用于模型的文本,而不是来自通用 OpenAI 模型?
我可以使用一些标志来消除通用模型的结果吗?
我想直接在 React Native (expo) 中使用 Chat GPT Turbo api 与逐字流这里是没有流的工作示例
fetch(`https://api.openai.com/v1/chat/completions`, {
body: JSON.stringify({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'hello' }],
temperature: 0.3,
max_tokens: 2000,
}),
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + API_KEY,
},
}).then((response) => {
console.log(response); //If you want to check the full response
if (response.ok) {
response.json().then((json) => {
console.log(json); //If you want to check the response as JSON
console.log(json.choices[0].message.content); //HERE'S THE CHATBOT'S RESPONSE
});
}
});
Run Code Online (Sandbox Code Playgroud)
我可以改变什么来逐字流数据
我正在尝试构建一个 Discord 机器人,它使用 GPT-4 API 作为 Discord 上的聊天机器人。我有最新版本的 OpenAI 库,但当我运行代码时,它告诉我“发生错误:模块‘openai’没有属性‘ChatCompletion’”
我尝试卸载并重新安装 OpenAI 库,尝试使用完成端点并收到错误“这是一个聊天模型,v1/completions 端点不支持。您是否打算使用 v1/chat/completions?”
这是给我带来问题的代码片段:
async def get_gpt_response(prompt, history):
history_strings = [f"{message['role']}: {message['content']}" for message in history] # update history format
chat_prompt = '\n'.join(history_strings + [f"user: {prompt}"])
completions = openai.ChatCompletion.create(
engine=config["model"],
prompt=chat_prompt,
max_tokens=config["max_tokens"],
n=1,
temperature=config["temperature"],
)
return completions.choices[0].text.strip().split('assistant:', 1)[-1].strip()
Run Code Online (Sandbox Code Playgroud) 我正在测试几个广泛发布的 GPT 模型,只是想尝试一下,但遇到了一个无法解决的错误。
我正在运行这段代码:
from llama_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os
os.environ["OPENAI_API_KEY"] = 'MYKEY'
def construct_index(directory_path):
max_input_size = 4096
num_outputs = 512
max_chunk_overlap = 20
chunk_size_limit = 600
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
llm_predictor_gpt = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs))
documents = SimpleDirectoryReader(directory_path).load_data()
index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor_gpt, prompt_helper=prompt_helper)
index.save_to_disk('index.json')
return index
def chatbot(input_text):
index = GPTSimpleVectorIndex.load_from_disk('index.json')
response = index.query(input_text, response_mode="compact")
return response.response
iface = gr.Interface(fn=chatbot,
inputs=gr.inputs.Textbox(lines=7, label="Enter your …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个 ChatGPT 网站克隆,现在我需要制作流完成效果,以逐字显示结果。我的服务器是一个使用Express.js框架的 TypeScript Node.js 应用程序。
这是路线:
import express, { Request, Response } from 'express';
import cors from 'cors';
import { Configuration, OpenAIAPI } from 'openai';
// ...
app.post('/api/admin/testStream', async (req: Request, res: Response) => {
const { password } = req.body;
try {
if (password !== process.env.ADMIN_PASSWORD) {
res.send({ message: 'Incorrect password' });
return;
}
const completion = await openai.createCompletion({
model: 'text-davinci-003',
prompt: 'Say this is a test',
stream: true,
}, { responseType: 'stream' });
completion.data.on('data', (chunk: …Run Code Online (Sandbox Code Playgroud) 我正在使用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) 我目前正在开发一个聊天机器人,由于我使用的是 Windows 11,它不允许我迁移到较新的 OpenAI 库或降级它。ChatCompletion我可以用其他功能替换该功能以在我的版本上使用吗?
这是代码:
import openai
openai.api_key = "private"
def chat_gpt(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message['content'].strip()
if __name__ == "__main__":
while True:
user_input = input("You: ")
if user_input.lower() in ["quit", "exit", "bye"]:
break
response = chat_gpt(user_input)
print("Bot:", response)
Run Code Online (Sandbox Code Playgroud)
这是完整的错误:
...您尝试访问 openai.ChatCompletion,但 openai>=1.0.0 不再支持此功能 - 请参阅https://github.com/openai/openai-python上的API 了解自述文件。
您可以运行
openai migrate自动升级您的代码库以使用 1.0.0 界面。或者,您可以将安装固定到旧版本,例如 <pip install openai==0.28>
此处提供了详细的迁移指南:https ://github.com/openai/openai-python/discussions/742
我尝试通过 pip 进行升级和降级。
我对使用 llama-index 库来训练 GPT-3 以及通过标准 API 使用 ChatGPT(两者都在 Python 中)还相当陌生。我注意到标准 ChatGPT API 我可以简单地执行以下代码,让 ChatGPT 获取消息历史记录作为上下文:
message_history=[]
completion = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=message_history)
Run Code Online (Sandbox Code Playgroud)
现在我正在使用 llama-index 库在更具体的上下文中训练 GPT-3,但是我不知道如何让模型也考虑 message_history,这是我目前正在处理的代码,我不知道如何实现消息历史记录:
def construct_index(directory_path):
# set maximum input size
max_input_size = 4096
# set number of output tokens
num_outputs = 2000
# set maximum chunk overlap
max_chunk_overlap = 20
# set chunk size limit
chunk_size_limit = 600
# define prompt helper
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
# define LLM
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-ada-001", max_tokens=num_outputs))
# define context …Run Code Online (Sandbox Code Playgroud) 我在我的 React 应用程序上使用聊天 gpt api。我面临的问题是如何格式化来自聊天 gpt 的响应。如果要求它以表格格式给我一个响应,它会提供奇怪的响应,我使用预标记来显示文本,响应以这种方式显示附加图像,但我想要正确的表格,就像聊天 gpt 一样,如果我要求的话,以同样的方式它显示为段落形式而不是在不同行上的任何项目列表,因此如何正确格式化聊天 GPT 响应。
我想要正确的表格和列表,如聊天 GPT 显示,但这就是我接收数据的方式 这是使用预标记时数据的显示方式,但我想要正确的表格
openai-api ×10
python ×5
gpt-3 ×4
chatgpt-api ×3
javascript ×2
llama-index ×2
nlp ×2
events ×1
expo ×1
express ×1
fine-tuning ×1
formatting ×1
gpt-4 ×1
gpt-index ×1
langchain ×1
node.js ×1
pip ×1
react-native ×1
reactjs ×1
sockets ×1