问题出在 urljoin 函数会将包含冒号(:)的路径部分解释为 URL 协议(scheme),所以当你的路径中包含冒号时(如 nomic-embed-text:v1.5),它会被错误解析。

解决方案是确保路径部分被正确编码,或者使用其他方法拼接URL。以下是几种解决方案:

方案1:使用 urllib.parse.urljoin 并编码路径

from urllib.parse import urljoin, quote

base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'

# 编码路径中的特殊字符
encoded_path = quote(path, safe='')
result = urljoin(base_url + '/', encoded_path)
print(result)

方案2:直接拼接(更简单)

base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'

result = f"{base_url.rstrip('/')}/{path}"
print(result)

方案3:使用 pathlib(Python 3.4+)

from pathlib import PurePosixPath

base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'

result = str(PurePosixPath(base_url) / path)
print(result)

推荐使用方案2,因为它最简单直接,而且能正确处理你的用例。方案1更通用但稍复杂,方案3更面向对象但可能不够直观。

最终正确结果应该是:

http://10.90.0.93:11434/nomic-embed-text:v1.5
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐