最酷的是,这个应用程序总是能意识到数据文件夹中的更改 。如果添加另一个JSON Lines文件,LLM App就会发挥神奇的作用 , 自动更新人工智能模型的响应 。
步骤2:数据加载和映射使用Pathway的JSON Lines输入连接器,将读取本地JSONlines文件,将数据条目映射到模式中,并创建一个路径表 。可以参阅app.py中的完整源代码:
...sales_data = https://www.isolves.com/it/cxkf/yy/Python/2023-12-13/pw.io.jsonlines.read( "./examples/data", schema=DataInputSchema, mode="streaming")
将每个数据行映射到结构化文档模式 。可以参阅App.py中的完整源代码:
class DataInputSchema(pw.Schema): doc: str
步骤3:数据嵌入每个文档都嵌入了OpenAI API , 并检索嵌入的结果 。可以参阅app.py中的完整源代码:
【如何在Python中使用ChatGPT API处理实时数据】...embedded_data = https://www.isolves.com/it/cxkf/yy/Python/2023-12-13/embeddings(cnotallow=sales_data, data_to_embed=sales_data.doc)
步骤4:数据索引然后在生成的嵌入上构建一个即时索引:
index = index_embeddings(embedded_data)
步骤5:用户查询处理和索引创建一个REST端点 , 从API请求负载中获取用户查询,并将用户查询嵌入OpenAI API 。
...query, response_writer = pw.io.http.rest_connector( host=host, port=port, schema=QueryInputSchema, autocommit_duration_ms=50,)embedded_query = embeddings(cnotallow=query, data_to_embed=pw.this.query)
步骤6:相似性搜索和提示工程通过使用索引来识别查询嵌入的最相关匹配来执行相似性搜索 。然后构建一个提示,将用户的查询与获取的相关数据结果合并,并将消息发送到ChatGPT完成端点 , 以生成正确且详细的响应 。
responses = prompt(index, embedded_query, pw.this.query)
当制作提示符并在prompt.py中向ChatGPT添加内部知识时,遵循了相同的场景学习方法 。
prompt = f"Given the following discounts data: \n {docs_str} \nanswer this query: {query}"
步骤7:返回响应最后一步就是将API响应返回给用户 。
# Build prompt using indexed dataresponses = prompt(index, embedded_query, pw.this.query)
步骤8:将把所有步骤放在一起现在,如果将上述所有步骤放在一起,就拥有了用于自定义折扣数据的支持LLM的Python API,可以在app.py Python脚本中看到实现 。
import pathway as pwfrom common.embedder import embeddings, index_embeddingsfrom common.prompt import promptdef run(host, port): # Given a user question as a query from your API query, response_writer = pw.io.http.rest_connector( host=host, port=port, schema=QueryInputSchema, autocommit_duration_ms=50, ) # Real-time data coming from external data sources such as jsonlines file sales_data = https://www.isolves.com/it/cxkf/yy/Python/2023-12-13/pw.io.jsonlines.read( "./examples/data", schema=DataInputSchema, mode="streaming" ) # Compute embeddings for each document using the OpenAI Embeddings API embedded_data = embeddings(cnotallow=sales_data, data_to_embed=sales_data.doc) # Construct an index on the generated embeddings in real-time index = index_embeddings(embedded_data) # Generate embeddings for the query from the OpenAI Embeddings API embedded_query = embeddings(cnotallow=query, data_to_embed=pw.this.query) # Build prompt using indexed data responses = prompt(index, embedded_query, pw.this.query) # Feed the prompt to ChatGPT and obtain the generated answer. response_writer(responses) # Run the pipeline pw.run()class DataInputSchema(pw.Schema): doc: strclass QueryInputSchema(pw.Schema): query: str
步骤9 (可选):添加交互式UI为了让应用程序更具互动性和用户友好性,可以使用Streamlit来构建一个前端应用 。
文章插图
运行应用程序按照README. Md文件中“如何运行项目”一节中的说明,可以开始询问有关折扣的问题,API将根据添加的折扣数据源做出响应 。
在使用UI(应用数据源)将这些知识提供给GPT之后,看看它是如何回复的:
文章插图
这个应用程序考虑了Rainforest API和discount .csv文件文档(立即合并来自这些来源的数据),实时对其进行索引,并在处理查询时使用这些数据 。
进一步的改进通过向ChatGPT添加折扣等领域特定知识,发现了LLM应用程序的一些功能 。还可以做更多的事情:
- 整合来自外部API的额外数据 , 以及各种文件(例如Jsonlines、PDF、Doc、html或Text格式),PostgreSQL或MySQL等数据库 , 以及来自Kafka、Redpanda或Debedizum等平台的流数据 。
推荐阅读
- 如何选用锂电池均衡仪
- 2023值得一玩的手游推荐
- 我的手机我做主,如何为Android手机应用换图标?
- 航空公司该如何选择,联合航空公司如何选座位
- 微信投票能如何操作,微信投票如何快速拿1000票
- 叶倩文:错过费翔后去抢闺蜜的老公,如今62岁无儿无女已经白头
- 韩国夫人出席荷兰国宴拿出战袍!穿泡泡袖小黑裙美如赫本,美翻了
- 如何修复感情
- 今冬女发别瞎剪,不如试试这四种,洋气瘦脸显气质
- 微信验证消息能如何看全,为什么微信互删后验证消息也消失了