AGI围城
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

AGI围城

是的,这个世界还是很有趣的。
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 提示词工程

  • 大模型API调用

  • OpenAI工具

    • 1. 文件检索
      • 1.1 注意事项
      • 1.2 核心概念
      • 1.3 助手创建
      • 1.4 上传文件并向量存储
      • 1.5 将助手关联知识库
      • 1.6 对话
      • 1.7 文件附加
    • 2. 代码解释器
    • 3. 函数调用
  • 嵌入向量

  • 检索增强生成(RAG)

  • 基础知识
  • OpenAI工具
xiao_sl
2025-09-05
目录

1. 文件检索

# 1.1 注意事项

本文档中的所有代码示例假设您已经正确配置了 API 密钥和 BASE_URL 的系统环境变量。如果您还未配置,请参考 大模型API调用 - 1.5 系统环境变量配置 章节进行设置。

代码中的 client = OpenAI() 将自动从以下环境变量读取配置:

  • OPENAI_API_KEY:您的 API 密钥
  • OPENAI_BASE_URL:API 服务地址(可选,默认为 OpenAI 官方地址)

# 1.2 核心概念

File Search是基于向量数据库的语义检索工具,通过自动文本分块和嵌入生成技术,支持多文件并行处理与跨文档语义搜索,实现大规模知识库的高效信息查询。

# 1.3 助手创建

from openai import OpenAI
import time

client = OpenAI()

# 创建助手
assistant = client.beta.assistants.create(
    name="烟草行业助手",
    instructions="你是一个烟草行业的专家,请根据用户的问题与知识库给出专业的回答",
    model="gpt-4o",
    tools=[{"type": "file_search"}],
)
1
2
3
4
5
6
7
8
9
10
11
12

# 1.4 上传文件并向量存储

# 创建向量存储库
vector_store = client.beta.vector_stores.create(name="烟草行业解决方案白皮书")

# 文件批量上传
file_paths = ["《烟草行业解决方案白皮书》.pdf"]
file_streams = [open(path, "rb") for path in file_paths]

file_batch = client.beta.vector_stores.file_batches.upload_and_poll(
    vector_store_id=vector_store.id, files=file_streams
)

# 查看处理状态(需包含:in_progress, completed, failed等状态)
print(f"状态:{file_batch.status},成功:{file_batch.file_counts.completed}")
1
2
3
4
5
6
7
8
9
10
11
12
13

# 1.5 将助手关联知识库

assistant = client.beta.assistants.update(
    assistant_id=assistant.id,
    tool_resources={
        "file_search": {
            "vector_store_ids": [vector_store.id]  # 可关联多个知识库
        }
    }
)
1
2
3
4
5
6
7
8

# 1.6 对话

thread = client.beta.threads.create(
    messages=[
        {
            "role": "user",
            "content": "案例中做了哪些建设?",
        }
    ]
)

# 运行助手
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id
)

# 轮询等待 `run` 处理完成
while True:
    run_status = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
    if run_status.status in ["completed", "failed"]:
        break
    time.sleep(1)

# 获取助手的回答并打印
messages = client.beta.threads.messages.list(thread_id=thread.id)

for message in messages.data:
    print(f"{message.role}: {message.content}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 1.7 文件附加

在创建话题时,也可以附加一个向量存储到此线程,在此线程上创建运行时,文件搜索工具将查询来自您的助手的 vector_store和线程上向量存储库上的数据,具体写法如下:

# Upload the user provided file to OpenAI
message_file = client.files.create(
    file=open("---------", "rb"), purpose="assistants"
)

# Create a thread and attach the file to the message
thread = client.beta.threads.create(
    messages=[
        {
            "role": "user",
            "content": "------------------",
            # 将新文件附加到消息中
            "attachments": [
                { "file_id": message_file.id, "tools": [{"type": "file_search"}] }
            ],
        }
    ]
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
编辑 (opens new window)
#OpenAI工具
上次更新: 2025/09/18, 08:16:15
3. 大模型API其他调用方式
2. 代码解释器

← 3. 大模型API其他调用方式 2. 代码解释器→

最近更新
01
2. 朴素RAG
09-17
02
1. RAG基本概念
09-13
03
4. 向量相关参考资料
09-12
更多文章>
Theme by Vdoing | Copyright © 2019-2025 AGI围城 | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式