先做个广告:如需代注册帐号或代充值Chatgpt Plus会员,请添加站长客服微信:pingzi7749
前几天,Azure OpenAI gpt-35-turbo 发布了更新。
gpt-35-turbo 有两个新版本:
GPT-35-turbo(版本 0613)
gpt-35-turbo-16k(版本 0613)
0613 版本最大的更新之一是通过system message增强了 steerability 。这意味着模型可以更好地遵循您在系统消息中概述的说明,这使您能够进一步自定义模型的行为或设置护栏以确保负责任地使用模型。
该模型的 16k 版本 gpt-35-turbo-16k 提供的上下文长度是之前 gpt-35-turbo 模型的 4 倍,这将帮助您解锁需要更长提示的场景。
https://learn.microsoft.com/en-us/azure/cognitive-services/openai/concepts/models
有了gpt-35-turbo-16k模型,我们很多业务场景就比较方便了。
接下来,我们使用新的模型进行Langchain的实践。
首先定义Bing Search服务,定义embendding、Langchain:
#Bing Search
os.environ["BING_SUBSCRIPTION_KEY"] = "###" #your api key
os.environ["BING_SEARCH_URL"] = "###" #your api base
#Azure OpenAI embedding 配置
embedding = OpenAIEmbeddings(model="text-embedding-ada-002",
deployment = 'text-embedding-ada-002',
openai_api_base = "###", #your azure api base
openai_api_type = "azure",
openai_api_key = '###', #your azure api key
chunk_size = 1
)
llm = AzureChatOpenAI(
temperature=0.0,
deployment_name="gpt-35-turbo-16k",
model="gpt-35-turbo-16k")
#给ChatGPT添加计算器和搜索工具
tools = load_tools(["llm-math","bing-search"], llm=llm)
agent= initialize_agent(
tools,
llm,
agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
handle_parsing_errors=True,
verbose = True)
接下来我们搜索2023年的重大事件:
我们看到上面输出了5条news。
接下来,询问计算的问题,给出的答案如下:
## 用思维链把ChatGPT变成智能客服
def get_completion_from_messages(messages,
model="gpt-35-turbo-16k",
temperature=0,
max_tokens=2000):
response = openai.ChatCompletion.create(
engine=model,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
)
return response.choices[0].message["content"]
#数据 - 商品的描述
cardata = """
1. 产品:奥迪A6L 2.0T 2023款 雅致型
类别:中大型车
品牌:一汽奥迪
上市时间:2023年5月5日
发动机:2.0T 190马力 L4
综合油耗:7
特色功能:倒车影像,定速巡航,运动,全景天窗,自动泊车,自动驾驶,遥控钥匙
描述:一款适合年轻群体,适合家用和商务的中高端轿车。
价格:350000元
2. 产品:宝马5系530Li 2.0T 23款 领先型
类别:中大型车
品牌:华晨宝马
上市时间:2023年1月16日
发动机:2.0T 245马力 L4
综合油耗:7.8
特色功能:倒车影像,定速巡航,运动,全景天窗,自动泊车,自动驾驶,遥控钥匙,涡轮增压,直喷
描述:一款拥有优秀驾驶体验的中高端轿车。
价格:390000元
"""
#元提示词 (MetaPrompt),使用自然语言,帮GPT模型理清思路,便可以进行业务推理。
#这是GPT3.5, GPT4显著地区别于其他模型的能力
delimiter = "####"
system_message = f"""
按照以下步骤回答客户的询问。客户查询将用四个标签分隔, 例如 {delimiter}.
步骤1:{delimiter} 首先确定用户是否在询问一个或多个特定车型的问题。车型类别不算数。.
步骤2:{delimiter} 如果用户询问的是特定车型,请确定该车型是否在以下列表中。
所有可用产品:
{cardata}
步骤3:{delimiter} 如果信息中包含上述列表中的车型,请列出用户在其信息中所做的任何假设,\
例如车型X比车型Y大,或者车型Z上市时间更早.
步骤4:{delimiter}: 如果用户做出了任何假设,请根据您的车型信息判断该假设是否正确。
步骤5:{delimiter}: 首先,如果可以的话,礼貌地纠正客户的错误假设。\
只在可用车型列表中提及或参考车型,因为这是商店唯一销售的车型。\
用友好的语气回答客户的问题.
使用以下格式:
步骤1:{delimiter} <步骤1推理>
步骤2:{delimiter} <步骤2推理>
步骤3:{delimiter} <步骤3推理>
步骤4:{delimiter} <步骤4推理>
回复用户:{delimiter} <回复客户>
一定要用 {delimiter} 分开每一步.
"""
#客户 0 shot 提问
user_message = f"""宝马530的23款2.0T比奥迪A6L2023款2.0T贵多少"""
messages = [
{'role':'system',
'content': system_message},
{'role':'user',
'content': f"{delimiter}{user_message}{delimiter}"},
]
response = get_completion_from_messages(messages)
print(response)
user_message = f"""不要显示推理步骤,直接显示回复内容,
宝马530的23款2.0T比奥迪A6L2023款2.0T哪个油耗更低?"""
messages = [
{'role':'system',
'content': system_message},
{'role':'user',
'content': f"{delimiter}{user_message}{delimiter}"},
]
response = get_completion_from_messages(messages)
from IPython.display import display
IPython.display.Markdown(response)
## 精确的知识问答
### 使用Embedding(嵌入)给ChatGPT增加知识记忆,
#!pip install pypdf
#!pip install "langchain[docarray]"
#!pip install -U docarray
#!pip install VectorstoreIndexCreator
!pip install langchain
#将内部文档嵌入
from langchain.document_loaders import PyPDFLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.vectorstores import DocArrayInMemorySearch
loader = PyPDFLoader("./1.pdf")
index = VectorstoreIndexCreator(
vectorstore_cls=DocArrayInMemorySearch,embedding=embedding
).from_loaders([loader])
query ="发票总金额是多少,什么公司的发票?"
response = index.query(query,llm=llm)
display(Markdown(response))
网友评论