Skip to main content

LLM-based城市模拟器agent构建库

Project description

Pycityagent

Table of Contents

Introduction

Framework of CityAgent

  • framwork

Workflow of CityAgent

  • workflow

Hands On - By An Easy Demo

Apply for your App

  • You first need to register your account in the Opencity website
  • Login to the console, create your own app.
  • Get your app_id and app_secret
    • app

Get your Config

  • There are three parts of a config file: llm_request, citysim_request and apphub_request
llm_request:
  text_request:
    request_type: openai / qwen
    api_key: xxx
    model: xxx
    (api_base): xxx (this is an optional config, if you use opanai and want to use your own backend LLM model, default to "https://api.openai.com/v1")
  img_understand_request:
    request_type: openai / qwen
    api_key: xxx
    model: xxx ('gpt-4-turbo' if you use openai)
    (api_base): same as text_request
  img_generate_request:
    request_type: qwen
    api_key: xxx
    model: xxx

citysim_request:
  simulator: 
    server: https://api-opencity-2x.fiblab.net:58081
  map_request:
    mongo_coll: map_beijing_extend_20240205
    cache_dir: ./cache
  route_request: 
    server: http://api-opencity-2x.fiblab.net:58082
  streetview_request:
    engine: baidumap / googlemap
    mapAK: baidumap api-key (if you use baidumap engine)
    proxy: googlemap proxy (if you use googlemap engine)

apphub_request:
  hub_url: https://api-opencity-2x.fiblab.net:58080
  app_id: your APP ID
  app_secret: your APP Secret
  profile_image: the profile image of your agent
  • Forget about citysim_request, let's focus on the other two.

LLM_REQUEST

  • As you can see, the whole CityAgent is based on the LLM, by now, there are three different parts of config items: text_request, img_understand_request and img_generate_request
  • text_request
    • By now, we support qwen and openai
      • Notice: Our environments are basically conducted with qwen. If you prefer to use openai, then you may encounter hardships. AND fell free to issue us.
    • Get your api_key and chooce your model
    • If you want to use your backend models, set the api_base (only available when using openai)
  • img_understand_request
    • By now, we support qwen and openai
    • If choose openai, then the model has to be 'gpt-4-turbo'
    • If you want to use your backend models, set the api_base (only available when using openai)
  • img_generate_request
    • By now, only [qwen] is supported

CITYSIM_REQUEST

  • Most of the configuration options in this part are determined, such as simulator.server, map_request.mongo_coll, route_request.server
  • map_request.cache_dir: used for storing map data your machine, you can justify the target dir as you wish (create the dir first)
  • streetview_request: used for obtaining streetview images, by now, we support baidumap engine and googlemap engine
    • if you choose baidumap engine, you need to get a baidumap api-key
      streetview_request:
        engine: baidumap
        mapAK: xxxx
      
    • if you choose googlemap engine, you need to provide your proxy address, for example:
      streetview_request:
        engine: googlemap
        proxy: 
          http: http://xxxx
          https: https://xxxx
      

APPHUB_REQUEST

  • Used for creating the connection between backend server and client.
  • Put your app_id and app_secret here.

Installation

PyPI Installation

  • Install from pip easily.
pip install pycityagent

Install from source code

  • Clone this repo
  • Install required packages
    pip install -r requirements.txt
    
  • Install libGL.so.1, if you ara using Linux with a suitable package manager: (apt for instance)
    apt-get install libgl1
    

CODE and RUN

  • Check the example folder and copy files from it (Remember replace the config file)
  • Look at the Demo: (A citizen Agent demo)
import yaml
from pycityagent.simulator import Simulator
from pycityagent.urbanllm import LLMConfig, UrbanLLM
import asyncio
import time

async def main():
    # load your config
    with open('config_template.yaml', 'r') as file:
        config = yaml.safe_load(file)
    
    # get the simulator object
    smi = Simulator(config['citysim_request'])
    
    # get the person by person_id, return agent
    agent = await smi.GetCitizenAgent("name_of_agent", 8)

    # Help you build unique agent by scratch/profile
    agent.Image.load_scratch('scratch_template.json')

    # Load Memory and assist the agent to understand "Opencity"
    agent.Brain.Memory.Spatial.MemoryLoad('spatial_knowledge_template.json')
    agent.Brain.Memory.Social.MemoryLoad('social_background_template.json')

    # Connect to apphub so you can interact with your agent in front end
    agent.ConnectToHub(config['apphub_request'])
    agent.Bind()

    # Creat the soul (a LLM processor actually)
    llmConfig = LLMConfig(config['llm_request'])
    soul = UrbanLLM(llmConfig)

    # Add the soul to your agent
    agent.add_soul(soul)
    
    # Start and have fun with it!!!
    while True:
        await agent.Run()
        time.sleep(1)

if __name__ == '__main__':
    asyncio.run(main())

Congratulations

  • Following this "Hands On" guide, you have easily created an agent by your hand!
  • You can observe your AGENT in your console or in the Opencity website.
  • HAVE FUN WITH IT!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycityagent-1.1.10.tar.gz (55.7 kB view details)

Uploaded Source

Built Distribution

pycityagent-1.1.10-py3-none-any.whl (68.4 kB view details)

Uploaded Python 3

File details

Details for the file pycityagent-1.1.10.tar.gz.

File metadata

  • Download URL: pycityagent-1.1.10.tar.gz
  • Upload date:
  • Size: 55.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for pycityagent-1.1.10.tar.gz
Algorithm Hash digest
SHA256 0d9e58329f1280114771ba7c62138c81327e251435d8485e0858d82967dd03da
MD5 a142295c576cc7a90f194da1be333064
BLAKE2b-256 b6e81bc6e498190ad38c724fc063d513fbc907a45c6311507c03dabf35dfac96

See more details on using hashes here.

File details

Details for the file pycityagent-1.1.10-py3-none-any.whl.

File metadata

  • Download URL: pycityagent-1.1.10-py3-none-any.whl
  • Upload date:
  • Size: 68.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for pycityagent-1.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 36876c37fb390ed7ff63c5be6f0e38a8b561f1388452d636a40194d7065512b7
MD5 43e5d581f7864c5ccfa6f0f4eb42dc1c
BLAKE2b-256 791c6e5dcbddcf7a5d60db265e7972525d84f286403b9e7a6ab7c033bfdb7813

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page