
Yahoo Finance 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