在Azure上的OpenAI端点
注意 OpenAI key 可以用微软 用例【1. 嵌入 ,2. 问答】
1.
import os
import openai
from langchain.embeddings import OpenAIEmbeddings
os.environ["OPENAI_API_KEY"] = "****" # Azure 的密钥
os.environ["OPENAI_API_BASE"] = "https://z****/" # Azure 的终结点
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "****" # API 版本,未来可能会变
model = "***" # 模型的部署名
embeddings = OpenAIEmbeddings(engine=model)#text-embedding-ada-002 最好用相同的
text = "你是"
query_result = embeddings.embed_query(text)
doc_result = embeddings.embed_documents([text])
print(doc_result)
import os
import openai
from langchain.embeddings import OpenAIEmbeddings
os.environ["OPENAI_API_KEY"] = "****" # Azure 的密钥
os.environ["OPENAI_API_BASE"] = "https://z****/" # Azure 的终结点
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "****" # API 版本,未来可能会变
model = "***" # 模型的部署名
llm = AzureOpenAI(
deployment_name=model,
model_name="gpt-35-turbo",
)
print(llm("你好"))
LangChain 和 LLM 最常见的用例之一是摘要。您可以总结任何一段文本,但用例包括总结电话、文章、书籍、学术论文、法律文件、用户历史、表格或财务文件。拥有一个可以快速汇总信息的工具非常有帮助。
对于短文的摘要,方法很简单,其实你不需要做任何花哨的事情,只需简单的提示说明即可
from langchain.llms import OpenAI
from langchain import PromptTemplate
# 请注意,默认模型已经是,但我在这里明确指出它,以便您以后知道在何处更改它(如果需要)
llm = AzureOpenAI(
deployment_name=model,
model_name="gpt-35-turbo",
)
template = """
%指示:
请总结下面的一段文字。
以 5 岁儿童能理解的方式回答。
%文本:
{text}
"""
prompt = PromptTemplate(
input_variables=["text"],
template=template,
)
confusing_text = """
近日深圳市人民政府办公厅正式印发了《深圳市数字孪生先锋城市建设行动计划(2023)》(简称:“计划”),其中对于如何建设城市级数字孪生底座、如何打造万亿级核心产业增加值数字经济高地都列出了执行方式。
深圳市一直是国内数字孪生城市建设的“排头兵”,此次“计划”的发布,表明深圳市将在打造“标杆性”数字孪生城市方面继续布局发力,并给出了更加具体的执行措施。
在该“计划”发布之前,已有多项数字孪生相关国家级、省级、市级政策文件发布,包括《数字中国建设整体布局规划》、《国务院关于加强数字政府建设的指导意见》(国发〔2022〕14号)、《广东省数字政府改革建设“十四五”规划》(粤府〔2021〕44号)、《深圳市数字政府和智慧城市“十四五”发展规划》。
此次“计划”的总体目标是相对量化具体的,总共分为四个大的方向:建设一个一体协同的数字孪生底座、构建不少于十类数据相融合的孪生数据底板、上线承载超百个场景、超千项指标的数字孪生应用、打造万亿级核心产业增加值数字经济高地。
接着,“计划”详细阐释了要如何完成这四大目标,具体要做哪些事,同时,“计划”明确了完成每项目标的牵头单位和责任单位,整体来看,牵头单位和责任单位主要以政府部门和国企为主。
在建设一体协同的城市级数字孪生底座方面,深圳将建设市区协同、统分结合的全市域时空信息平台(CIM平台),要按照“两级平台、四级应用”架构,打造“1+11+N”CIM平台体系,建设11个区级平台,N个部门级、行业级、重点片区级平台。
为了构建泛在实时、全域覆盖的物联感知体系,深圳将实现城市管理、交通、水务、生态环境、应急安全等领域不少于30万个物联感知终端接入,逐步推进28万路摄像头信息融入CIM平台。
在上线承载超百个场景、超千项指标的多跨协同数字孪生应用方面,深圳将建设城市级智能网联汽车统一监管平台,推动智能网联汽车高质量集聚发展;深圳将围绕政务服务、出行、住房、医疗、教育、养老等民生服务场景,深度挖掘数字孪生应用场景,让市民群众在智慧城市和数字政府建设中更有获得感。
最后,在打造信创驱动、数字赋能的万亿级核心产业增加值数字经济高地方面,深圳将加快推进数字孪生城市建设所需软硬件和底层技术国产化适配,探索鹏城云脑为城市级仿真推演和人工智能应用提供海量图形渲染及AI算力支撑。"""
final_prompt = prompt.format(text=confusing_text)
print(final_prompt)
print ("------- Prompt End -------")
output = llm(final_prompt)
print(output)
此方法也适用于短文本
摘要涉及创建多个较长文档的较小摘要。这对于将长文档提炼成核心信息很有用。
llm = AzureOpenAI(
deployment_name=model,
model_name="gpt-35-turbo",
)
with open('D:\操作系统\开通openAI embeding.md','r',encoding="utf-8") as file:
text = file.read()
print(text[:285])
num_tokens = llm.get_num_tokens(text)
print (f"您的文件中有{num_tokens}个令牌")
text_splitter = RecursiveCharacterTextSplitter(separators=["\n\n", "\n"], chunk_size=4000, chunk_overlap=350)
docs = text_splitter.create_documents([text])
print (f"您现在拥有 {len(docs)} 文档包含段文本")
chain = load_summarize_chain(llm=llm, chain_type='map_reduce',verbose=True) # verbose=True 可选,以查看发送到 LLM 的内容
# 这将运行 3 个文档,总结块,然后得到摘要的摘要。
output = chain.run(docs)
print (output)
为了使用 LLM 进行问答,我们必须:
1.通过LLM相关上下文它需要回答一个问题
2.将我们想要回答的问题传递给它
简化后,这个过程看起来像这样“llm(你的背景+你的问题)=你的答案”
llm = AzureOpenAI(
temperature=0,
deployment_name=model,
model_name="gpt-35-turbo",
)
context = """
1:可口可乐,价格4元
2:百事可乐,价格4.5元
3:雪碧,价格3.5元
4:脉动,价格6元
5:果趣,价格7元
6:果粒橙,价格5元
"""
question = "从中找一个最贵的饮料 给出答案"
output = llm(context + question)
# 我剥离文本以删除前导和尾随空格
print (output.strip())
随着我们提高我们的复杂性,我们将更多地利用这个约定。
当您需要选择将哪些数据放入上下文中时,困难的部分就出现了。这个研究领域被称为“文档检索”,并与 AI Memory 紧密结合。