请耐心等待,因为这确实是我编写的第一个主要代码,并且是针对 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) 我的 MERN 堆栈代码文件中有这个,并且运行良好。
exports.chatbot = async (req, res) => {
console.log("OpenAI Chatbot Post");
const { textInput } = req.body;
try {
const response = await openai.createCompletion({
model: "text-davinci-003",
prompt: `
What is your name?
My name is Chatbot.
How old are you?
I am 900 years old.
${textInput}`,
max_tokens: 100,
temperature: 0,
});
if (response.data) {
if (response.data.choices[0].text) {
return res.status(200).json(response.data.choices[0].text);
}
}
} catch (err) {
return res.status(404).json({ message: err.message });
}
};
Run Code Online (Sandbox Code Playgroud)
当我更改API请求时,使用新的API来完成聊天,这个不起作用(API代码来自openAI网站,并且适用于postman)
exports.chatbot = async (req, res) …Run Code Online (Sandbox Code Playgroud) 尝试调用刚刚为 ChatGPT 发布的 got-3.5-turbo API,但我收到了错误的请求错误?
var body = new
{
model = "gpt-3.5-turbo",
messages = data
};
string jsonMessage = JsonConvert.SerializeObject(body);
using (HttpClient client = new HttpClient())
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpRequestMessage requestMessage = new
HttpRequestMessage(HttpMethod.Post, "https://api.openai.com/v1/completions")
{
Content = new StringContent(jsonMessage, Encoding.UTF8, "application/json")
};
string api_key = PageExtension_CurrentUser.Community.CAIChatGPTAPIKey.Length > 30 ? PageExtension_CurrentUser.Community.CAIChatGPTAPIKey : Genesis.Generic.ReadAppSettingsValue("chatGPTAPIKey");
requestMessage.Headers.Add("Authorization", $"Bearer {api_key}");
HttpResponseMessage response = client.SendAsync(requestMessage).Result;
if (response.StatusCode == HttpStatusCode.OK)
{
string responseData = response.Content.ReadAsStringAsync().Result;
dynamic responseObj = JsonConvert.DeserializeObject(responseData);
string choices = responseObj.choices[0].text;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 ChatGPT 用于我的Telegram机器人。我曾经使用“text-davinci-003”模型,它运行良好(即使现在也运行良好),但我对其响应不满意。
现在我尝试将模型更改为“gpt-3.5-turbo”,它抛出一个 404 响应代码,其中包含文本“错误:请求失败,状态代码 404”,仅此而已。这是我的代码:
import { Configuration, OpenAIApi } from "openai";
import { env } from "../utils/env.js";
const model = "gpt-3.5-turbo"; // works fine when it's "text-davinci-003"
const configuration = new Configuration({
apiKey: env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
export async function getChatGptResponse(request) {
try {
const response = await openai.createCompletion({
model,
prompt: request, // request comes as a string
max_tokens: 2000,
temperature: 1,
stream: false
});
console.log("Full response: ", response, `Choices: `, ...response.data.choices) …Run Code Online (Sandbox Code Playgroud) 当我的项目运行此代码时它将返回
openai.error.APIConnectionError: Error communicating with OpenAI
async def embeddings_acreate(input: list[str]):
return await openai.Embedding.acreate(
api_key=await get_openai_api_key(),
model='text-embedding-ada-002',
input=input,
timeout=60,
)
Run Code Online (Sandbox Code Playgroud)
但如果我尝试:
import openai
import logging
openai.api_key = 'secret'
input_list = [
"tell me your name"
]
response = openai.Embedding.create(
model="text-embedding-ada-002",
input=input_list
)
embeddings = response["data"]
print(embeddings)
Run Code Online (Sandbox Code Playgroud)
有效......
我希望使用异步并使其
我刚刚确认,使用 API 进行聊天完成时,响应是纯文本形式的。
如何格式化响应中的文本,至少是新行、表格、项目符号点、标题......类似的东西?
我目前正在使用 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) 我是 OpenAI API 的新手。我使用 GPT-3.5-Turbo,使用以下代码:
\nmessages = [\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})\nRun 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": …
我正在尝试使用我自己创建的提示为 Langchain 创建 load_summarize_chain 。
\nllm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7)\nPROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])\nchain = load_summarize_chain(llm, chain_type="refine", verbose=True, prompt=PROMPT)\nRun Code Online (Sandbox Code Playgroud)\n但是,只有当 chain_type 设置为“stuff”时,我才能成功创建链。当我尝试将其指定为“map_reduce”或“refine”时,我收到如下错误消息:
\nllm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7)\nPROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])\nchain = load_summarize_chain(llm, chain_type="refine", verbose=True, prompt=PROMPT)\nRun Code Online (Sandbox Code Playgroud)\n这是怎么回事\xef\xbc\x9f
\n我认为这可能是因为“map_reduce”或“refine”无法直接在load_summarize_chain,或者其他一些原因。
我有一个 pdf 文件列表,我想分析每个文档的第一页以提取信息。我尝试过很多免费和付费的 OCR,但就我而言,结果还不够好。
所以我想尝试在Python中使用ChatGPT API。我该怎么办?
另外,我在openAI Vision文档中看到有一个detail参数,但没有提供示例,我该如何使用这个参数?
chatgpt-api ×10
openai-api ×10
python ×4
langchain ×2
asynchronous ×1
axios ×1
embedding ×1
firebase ×1
gpt-3 ×1
gpt-4 ×1
javascript ×1
node.js ×1
pdf ×1
post ×1
py-langchain ×1
telegram-bot ×1