如何在Python中使用ChatGPT API处理实时数据( 三 )

最酷的是,这个应用程序总是能意识到数据文件夹中的更改 。如果添加另一个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来构建一个前端应用 。

如何在Python中使用ChatGPT API处理实时数据

文章插图
运行应用程序按照README. Md文件中“如何运行项目”一节中的说明,可以开始询问有关折扣的问题,API将根据添加的折扣数据源做出响应 。
在使用UI(应用数据源)将这些知识提供给GPT之后,看看它是如何回复的:
如何在Python中使用ChatGPT API处理实时数据

文章插图
这个应用程序考虑了Rainforest API和discount .csv文件文档(立即合并来自这些来源的数据),实时对其进行索引,并在处理查询时使用这些数据 。
进一步的改进通过向ChatGPT添加折扣等领域特定知识,发现了LLM应用程序的一些功能 。还可以做更多的事情: