import openai
openai.api_key = "sk-XXXX-key需要在https://openai.com/注册后获取"
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "2023年在上海哪里赏樱花?"}
]
)
print(completion["choices"][0]["message"]["content"].strip())
返回结果
pip install openai
pip install gpt_index
pip install gradio
复制以下代码,取名chatgptsample.py
from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os
#设置全局变量保存OPENAI_API_KEY
os.environ["OPENAI_API_KEY"] = "sk-XXXX-key需要在https://openai.com/注册后获取"
#定义聊天函数
#参数directory_path:需要训练的文件路径
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)
# 模型加载,这里选用"text-davinci-003",也可以是最新的"gpt-3.5-turbo"
llm_predictor = 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, prompt_helper=prompt_helper)
#使用OpenAI LLM模型分析文档并建立索引信息
index.save_to_disk('index.json')
return index
#定义聊天函数
#参数input_text:用户输入的问题
def myfirstrobot(input_text):
#加载检索用的索引文件
index = GPTSimpleVectorIndex.load_from_disk('index.json')
response = index.query(input_text, response_mode="compact")
return response.response
#回调函数chatbot
#通过inputs向函数chatbot传入用户问题
#Input的Placeholder设置为"Enter your text"
#网页标题设置为"Custom-trained AI Chatbot"
iface = gr.Interface(fn=myfirstrobot,
inputs=gr.inputs.Textbox(lines=7, label="Enter your text"),
outputs="text",
title="Custom-trained AI Chatbot")
#指定训练文件的路径,并生成索引文件
index = construct_index("docs")
#启动网页
iface.launch(share=True)
需要训练的问卷放在指定文件夹下
Pyhton文件放在和Excel文件夹同级目录中
运行程序后,会生成用于FAQ检索的索引文件,index.json
且,会生成两个链接
供本地访问
Running on local URL: http://127.0.0.1:7860
供外部访问
Running on public URL: https://xxxxxxxx.gradio.live
访问后的效果
测试效果,每次调用会消耗Tokens,通过Tokens计费。
免费API调用的剩余容量查询Account - OpenAI API、
请记住,您是一位NLP领域的专家和优秀的算法工程师。使用带有tensorflow2.0subclassapi的python从头开始实现transformer模型。全部内容如下:构建transformer模型架构和依赖层;生成并预处理一些假样本数据,用于训练上面构建的模型;上面生成的样本数据的训练模型示例教程;上面生成的样本数据的预测模型示例教程;上面生成的示例数据的部署模型示例教程;最后,您所有的答案都以markdown格式呈现。You:Rememberyou’reanexpertandexcellentalgorithmengineerinNLParea.Implementtransform
我最初是在寻找有关如何在FF3.5中开始使用客户端数据库的基础教程。我的理解是这个功能在FF、Safari和IE8中是支持的。但是,我遇到了一个非常基本的问题,即在FF3.5中似乎找不到创建此类数据库的语法。例如,创建一个新的数据库:vardatabase=window.openDatabase("DatabaseName","DatabaseVersion");但是,在FF3.5中window.openDatabase是找不到的。它可以在Safari4中使用该语法找到。我没有测试过IE8,所以我不知道。有人对此有更多信息吗? 最佳答案
项目简介Aptos是由原Libra开发者创建的一个Layer1公链项目,Aptos的代码是建立在Diem的开源代码库基础上,使用Move语言作为开发语言,致力于改善区块链的安全性和可扩展性,打造可以面向数十亿人的基础设施网络(原本为Libra/Diem的目标)。2019年Facebook联合圈外机构共同启动了区块链项目Libra,Libra主要以构建全球统一的稳定币支付系统,由于监管的原因,后改名为Diem,之后Diem也因监管原因被打包出售,项目胎死腹中,原一部分开发者分别建立了三个项目(后续可能会出现更多),分别为Aptos、Sui和Linera,而目前关注度最高的为Aptos。Libra
我需要在WordPress3.5上传程序中上传新图像后立即运行一些代码。这是wp-includes/js/media-views.js的代码(第529-540行)uploading:function(attachment){varcontent=this.frame.content;//Iftheuploaderwasselected,navigatetothebrowser.if('upload'===content.mode())this.frame.content.mode('browse');//Ifwe'reinaworkflowthatsupportsmultipleatt
我正在使用ArcGIS3.5JavascriptAPI和RequireJS我用这段代码实现了它:varmap;require(["esri/map","dojo/domReady!"],function(Map){map=newMap("mapDiv",{center:[-96.571541,39.155622],zoom:3,basemap:"streets"});});});使用这个RequireJS配置:requirejs.config({baseUrl:"js/",paths:{underscore:'libs/underscore',tpl:'tpl',backbone:'l
我无法理解它的用途。RegisterClientScriptBlock/RegisterStartupScript。当我们可以直接在.js文件中写JavaScript代码然后在按钮上调用例如:2functionReqField1Validator(){if(document.forms[0].txtField1.value==''){alert('TextBoxcannotbeempty')returnfalse}returntrue}btnPostback.Attributes.Add("onclick","returnReqField1Validator()");RegisterC
我正在尝试使用JavaScript中的nativeFileAPI构建文件uploader,我想通过XMLHttpRequest(不使用jQuery)将文件上传到使用Express.js的Node.js服务器。文件读取部分工作正常,当我在没有XMLHttpRequest的情况下上传文件时,它工作正常(文件在Express.js的req.files中)。问题是通过AJAX上传:req.files总是空的。下面是一些代码:形式:前端的上传部分(在files[0].data中是一个文件-不是数组或其他东西):functionuploadFiles(files){varxhr=newXMLHtt
我在jsfile-uploader中使用了这个“iframe.contentDocument”,但它在IE8,Firefox(3.5及以下版本。我如何通过使用其他DOM来处理iframe来解决这个问题?感谢大家 最佳答案 尝试vardoc;variframeObject=document.getElementById('iframeID');//MUSThaveanIDif(iframeObject.contentDocument){//DOMdoc=iframeObject.contentDocument;}elseif(ifra
在ASP.NET3.5中,我可以使用XmlDataSource轻松绑定(bind)到XML文件。如何绑定(bind)到XML字符串而不是文件? 最佳答案 使用XmlDataSource.Data属性(property)。XmlDataSourcedataSource=newXmlDataSource();dataSource.Data="Item#1Item#2";dataSource.XPath="root/element";dataSource.DataBind();或者,您可以声明性地指定数据:
这个问题在这里已经有了答案:Androidstudio3.5refactorissue(9个回答)关闭3年前。Menu->Code->ReformatCode以前的AndroidStudio版本,每当我输入一些代码块时,我的手都非常习惯点击Ctl+Alt+L来格式化代码。在我更新到AndroidStudio3.5后,我将代码格式化为XML,这导致我的视图排列错误并破坏了我的设计。这是代码重新格式化之前的设计。代码重新格式化后(单击->Ctl+Alt+L),我的View在设计和xml代码方面都被打乱了。请看第二张图片。这似乎是一个错误,我已经将其报告给了GoogleIssueTrac