
Yahoo Finance API – 完整指南
OpenAI 助手API使开发者能够轻松在应用程序中创建功能强大的人工智能助手。该API提供了以下核心功能:
本文将介绍如何利用助手API和MyScale向量数据库构建自定义知识库,并将其与助手API集成,以实现更高的灵活性、准确性和成本效益。
助手API由以下几个核心部分组成:
助手API的一个显著特点是,它能够通过API调用使用工具。GPT模型可以将用户请求转换为格式化的工具调用,从而实现对工具的有效使用。
运行的基本流程如下:
这种运行机制由大型语言模型(LLM)驱动,极大地提升了自动化能力。
OpenAI 提供了一个内置的检索工具,但其成本较高。例如,对于一个24GB的Arxiv数据集,每天的费用为5美元(每月150美元)。此外,检索性能的准确性和效率难以预测。因此,对于需要存储和搜索大量数据的场景,使用外部向量数据库(如MyScale)是更好的选择。
根据官方文档,可以通过以下代码创建一个助手,并将知识库定义为其工具:
from openai import OpenAI
client = OpenAI()
assistant = client.beta.assistants.create(
name="ChatData",
instructions=(
"You are a helpful assistant. Do your best to answer the questions."
),
tools=[
{
"type": "function",
"function": {
"name": "get_wiki_pages",
"description": (
"Get some related wiki pages.n"
"You should use schema here to build WHERE string:nn"
"CREATE TABLE Wikipedia (n"
" id
String,n"
" text
String, -- abstract of the wiki page. avoid using this column to do LIKE matchn"
" title
String, -- title of the papern"
" view
Float32,n"
" url
String, -- URL to this wiki pagen"
"ORDER BY idn"
"You should avoid using LIKE on long text columns."
),
"parameters": {
"type": "object",
"properties": {
"subject": {"type": "string", "description": "a sentence or phrase describes the subject you want to query."},
"where_str": {"type": "string", "description": "a sql-like where string to build filter."},
"limit": {"type": "integer", "description": "default to 4"},
},
"required": ["subject", "where_str", "limit"],
},
},
}
],
model="gpt-3.5-turbo",
)
上述代码中,“subject”用于矢量搜索,“where_str”是SQL格式的过滤器。通过在工具描述中添加表模式,可以帮助助手生成正确的SQL查询。
为了将MyScale的知识库与助手集成,可以实现以下功能:
以下代码展示了如何实现一个工具,从MyScale向量存储中检索相关数据:
import clickhouse_connect
db = clickhouse_connect.get_client(
host='msc-4a9e710a.us-east-1.aws.staging.myscale.cloud',
port=443,
username='chatdata',
password='myscale_rocks'
)
must_have_cols = ['text', 'title', 'views']
database = 'wiki'
table = 'Wikipedia'
def get_related_pages(subject, where_str, limit):
q_emb = emb_model.encode(subject).tolist()
q_emb_str = ",".join(map(str, q_emb))
if where_str:
where_str = f"WHERE {where_str}"
else:
where_str = ""
q_str = f"""
SELECT dist, {','.join(must_have_cols)}
FROM {database}.{table}
{where_str}
ORDER BY distance(emb, [{q_emb_str}])
AS dist ASC
LIMIT {limit}
"""
docs = [r for r in db.query(q_str).named_results()]
return 'n'.join([str(d) for d in docs])
tools = {
"get_wiki_pages": lambda subject, where_str, limit: get_related_pages(subject, where_str, limit),
}
创建一个线程以保存用户输入:
thread = client.beta.threads.create()
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="What is Ring in mathematics? Please query the related documents to answer this.",
)
client.beta.threads.messages.list(thread_id=thread.id)
启动运行并链接到特定助手:
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="You must use query tools to look up relevant information for every answer to a user's question.",
)
运行状态需要持续监控,并根据助手调用的功能提供输出:
import json
from time import sleep
while True:
run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
if run.status == 'completed':
print(client.beta.threads.messages.list(thread_id=thread.id))
break
elif len(run.required_action.submit_tool_outputs.tool_calls) > 0:
print("> Action Required 0:
run = client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run.id,
tool_outputs=outputs
)
通过将MyScale向量数据库与OpenAI助手API集成,开发者可以构建功能更强大的AI助手。MyScale提供了高效的外部知识存储和检索能力,而OpenAI助手API则简化了开发流程。这种结合不仅提升了助手的知识覆盖范围,还显著增强了用户体验,为创建多功能虚拟助手奠定了基础。
原文链接: https://medium.com/@myscale/assistants-api-myscale-building-a-custom-knowledge-base-bb0c2edfcb49
Yahoo Finance API – 完整指南
WordPress REST API 内容注入漏洞分析
四款AI大模型API价格对比:DeepSeek R1、ChatGPT o3-mini、Grok3、通义千问 Max
四款AI大模型API基础参数、核心性能的区别:DeepSeek R1、ChatGPT o3-mini、Grok3、通义千问 Max
2025年多模态大模型API基础参数、核心性能:Deepseek、ChatGPT、文心一言
2025年最新推理大模型API价格对比:通义千问Max vs 豆包1.5 Pro vs 混元Lite
大模型新基座,基于FastAPI,利用Python开发MCP服务器
DeepSeek+ima:打造高效个人知识库,提升学习与工作效率
快速接入腾讯地图MCP Server