• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Gocobnus
V2EX  ›  程序员

讨教一个关于 go 程序和 Python 程序交互的问题

  •  
  •   Gocobnus · May 23, 2024 · 4040 views
    This topic created in 897 days ago, the information mentioned may be changed or developed.

    自己做的 ai 项目,本来是通过 go 写的后端代码,但是最近了解到微软的 autogen(基于 python)支持 agent 比较好,就想使用 autogen 来进行 agent 的开发,通过 go 的服务和 python 代码交互,于是就出现一个问题,go 的服务如何和 python 交互,我的需求不涉及到流式返回,也不涉及到太大的文件返回,现在有两种思路 1.通过 cmd 运行获取 std 输出 2.让 python 和 go 通过网络通信

    25 replies  •  2024-05-24 12:42:31 +08:00
    zzhaolei
    zzhaolei
    May 23, 2024
    1
    可以通过 go python binding 调用 py 的代码,但是很多项目都不维护了。

    也可以考虑进程间通信那些方式来交换数据
    deplives
    deplives
    May 23, 2024
    2
    面试题:进程间通信都有那些方式
    txzh007
    txzh007
    May 23, 2024
    3
    走 socket 吧
    Ally
    Ally
    May 23, 2024
    4
    gRPC
    aababc
    aababc
    May 23, 2024
    5
    七牛的 许老师 最近在搞 llgo 好像就是这方面的内容,应该是直接在代码层面的。可以了解一下看看
    NessajCN
    NessajCN
    May 23, 2024
    6
    named pipe
    unix domain socket
    tcp socket
    sophos
    sophos
    May 23, 2024
    7
    跨语言交互如果不是需要极端性能或者 ffi binding 方案很成熟,优选网络通信

    http+json 或 grpc 都挺好 :-) python 和 go 都有很成熟的框架了
    yaott2020
    yaott2020
    May 23, 2024 via Android
    8
    加一种:CGO ,但是楼主应该不需要
    wen20
    wen20
    May 23, 2024
    9
    选 cmd 运行呗,不用改 python, 对接其他 python 命令规范还能保持一样。
    noooop
    noooop
    May 23, 2024
    10
    谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语音模型微服务框架。https://github.com/noooop/zerollama
    noooop
    noooop
    May 23, 2024
    11
    typo

    谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语言模型微服务框架。https://github.com/noooop/zerollama

    @noooop
    flyqie
    flyqie
    May 23, 2024 via Android
    12
    进程间通信。

    最好不要进 binding 这个大坑。
    zjsxwc
    zjsxwc
    May 23, 2024
    13
    以前一个项目也是 go 与 python 相互调用,我用了 redis 里 topic 的 sub/pub
    tf2
    tf2
    May 23, 2024❤️1
    14
    路过。小 tip:头像为二次元大佬推荐的都比较靠谱~~~~
    roundgis
    roundgis
    May 23, 2024 via Android
    15
    zeromq

    or

    redis
    iyaozhen
    iyaozhen
    May 23, 2024
    16
    面试造火箭还是有点用的

    一般来说就 http 最方便了 python 起个服务,后面要转流式( base http/3 )也方便
    xsen
    xsen
    May 23, 2024
    17
    @iyaozhen #16 跟面试造火箭有一毛钱关系

    MQ 类( nsq/nats/kafka/rbbitmq 等等,包括 gRPC )就是用来做类似东西的
    iosyyy
    iosyyy
    May 23, 2024
    18
    @xsen mq 也太重了 不可取
    haiku
    haiku
    May 23, 2024 via Android
    19
    grpc ,可以用 unix 。socket 减少网络延迟
    Peven
    Peven
    May 23, 2024 via iPhone
    20
    grpc protobuffer
    void00000
    void00000
    May 23, 2024
    21
    简单就用 tcp 通信就行了,然后数据用 \n 结尾,方便易用
    ilylx2008
    ilylx2008
    May 23, 2024
    22
    不引入第三方基础设施比如 redis 的话,

    可以使用 zmq ,类似的,也可以走 websocket 协议。
    ilylx2008
    ilylx2008
    May 23, 2024
    23
    grpc 相对 zmq 都麻烦很多。
    xsen
    xsen
    May 24, 2024
    24
    @iosyyy #18 nsq/nats 都是轻量级的 mq ,要么 mqtt 也可以
    iyaozhen
    iyaozhen
    May 24, 2024
    25
    @xsen 面试不就会问这些嘛 以及这些方案的优劣
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4209 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 04:03 · PVG 12:03 · LAX 20:03 · JFK 23:03
    ♥ Do have faith in what you're doing.